Cleanup: removed unused patches.

This commit is contained in:
Arne Fitzenreiter
2010-05-18 22:30:00 +02:00
parent 754129b119
commit 00567147f9
41 changed files with 0 additions and 8845 deletions

View File

@@ -1,15 +0,0 @@
diff -Naur atl2-2.0.5.org/atl2_main.c atl2-2.0.5/atl2_main.c
--- atl2-2.0.5.org/atl2_main.c 2008-08-04 17:53:21.000000000 +0200
+++ atl2-2.0.5/atl2_main.c 2008-10-15 18:53:12.000000000 +0200
@@ -572,8 +572,10 @@
atomic_set(&adapter->txd_read_ptr, (int)txd_read_ptr);
// tx statistics:
- if (txs->ok)
+ if (txs->ok) {
+ adapter->net_stats.tx_bytes += txs->pkt_size;
adapter->net_stats.tx_packets++;
+ }
else
adapter->net_stats.tx_errors++;

View File

@@ -1,12 +0,0 @@
--- /tmp/ccache.c 2004-04-15 13:49:38.000000000 +0100
+++ ccache.c 2004-04-15 17:47:59.000000000 +0100
@@ -322,7 +322,9 @@
failed();
}
hash_int(st.st_size);
+#if 0 /* don't hash on the modification time */
hash_int(st.st_mtime);
+#endif
/* possibly hash the current working directory */
if (getenv("CCACHE_HASHDIR")) {

View File

@@ -1,75 +0,0 @@
diff --git a/drivers/net/wireless/ath/ath5k/ath5k.h b/drivers/net/wireless/ath/ath5k/ath5k.h
index 66bcb50..ad4d446 100644
--- a/drivers/net/wireless/ath/ath5k/ath5k.h
+++ b/drivers/net/wireless/ath/ath5k/ath5k.h
@@ -535,7 +535,7 @@ struct ath5k_txq_info {
u32 tqi_cbr_period; /* Constant bit rate period */
u32 tqi_cbr_overflow_limit;
u32 tqi_burst_time;
- u32 tqi_ready_time; /* Not used */
+ u32 tqi_ready_time; /* Time queue waits after an event */
};
/*
diff --git a/drivers/net/wireless/ath/ath5k/base.c b/drivers/net/wireless/ath/ath5k/base.c
index b501537..535a6af 100644
--- a/drivers/net/wireless/ath/ath5k/base.c
+++ b/drivers/net/wireless/ath/ath5k/base.c
@@ -1516,7 +1516,8 @@ ath5k_beaconq_config(struct ath5k_softc *sc)
ret = ath5k_hw_get_tx_queueprops(ah, sc->bhalq, &qi);
if (ret)
- return ret;
+ goto err;
+
if (sc->opmode == NL80211_IFTYPE_AP ||
sc->opmode == NL80211_IFTYPE_MESH_POINT) {
/*
@@ -1543,10 +1544,25 @@ ath5k_beaconq_config(struct ath5k_softc *sc)
if (ret) {
ATH5K_ERR(sc, "%s: unable to update parameters for beacon "
"hardware queue!\n", __func__);
- return ret;
+ goto err;
}
+ ret = ath5k_hw_reset_tx_queue(ah, sc->bhalq); /* push to h/w */
+ if (ret)
+ goto err;
- return ath5k_hw_reset_tx_queue(ah, sc->bhalq); /* push to h/w */;
+ /* reconfigure cabq with ready time to 80% of beacon_interval */
+ ret = ath5k_hw_get_tx_queueprops(ah, AR5K_TX_QUEUE_ID_CAB, &qi);
+ if (ret)
+ goto err;
+
+ qi.tqi_ready_time = (sc->bintval * 80) / 100;
+ ret = ath5k_hw_set_tx_queueprops(ah, AR5K_TX_QUEUE_ID_CAB, &qi);
+ if (ret)
+ goto err;
+
+ ret = ath5k_hw_reset_tx_queue(ah, AR5K_TX_QUEUE_ID_CAB);
+err:
+ return ret;
}
static void
diff --git a/drivers/net/wireless/ath/ath5k/qcu.c b/drivers/net/wireless/ath/ath5k/qcu.c
index abe36c0..9122a85 100644
--- a/drivers/net/wireless/ath/ath5k/qcu.c
+++ b/drivers/net/wireless/ath/ath5k/qcu.c
@@ -408,12 +408,13 @@ int ath5k_hw_reset_tx_queue(struct ath5k_hw *ah, unsigned int queue)
break;
case AR5K_TX_QUEUE_CAB:
+ /* XXX: use BCN_SENT_GT, if we can figure out how */
AR5K_REG_ENABLE_BITS(ah, AR5K_QUEUE_MISC(queue),
- AR5K_QCU_MISC_FRSHED_BCN_SENT_GT |
+ AR5K_QCU_MISC_FRSHED_DBA_GT |
AR5K_QCU_MISC_CBREXP_DIS |
AR5K_QCU_MISC_CBREXP_BCN_DIS);
- ath5k_hw_reg_write(ah, ((AR5K_TUNE_BEACON_INTERVAL -
+ ath5k_hw_reg_write(ah, ((tq->tqi_ready_time -
(AR5K_TUNE_SW_BEACON_RESP -
AR5K_TUNE_DMA_BEACON_RESP) -
AR5K_TUNE_ADDITIONAL_SWBA_BACKOFF) * 1024) |

View File

@@ -1,67 +0,0 @@
--- a/linux/include/linux/module.h 2009-07-27 09:17:57.000000000 +0000
+++ b/linux/include/linux/module.h 2009-07-27 09:39:26.000000000 +0000
@@ -16,7 +16,6 @@
#include <linux/kobject.h>
#include <linux/moduleparam.h>
#include <linux/marker.h>
-#include <linux/tracepoint.h>
#include <asm/local.h>
#include <asm/module.h>
@@ -333,11 +332,6 @@
unsigned int num_markers;
#endif
-#ifdef CONFIG_TRACEPOINTS
- struct tracepoint *tracepoints;
- unsigned int num_tracepoints;
-#endif
-
#ifdef CONFIG_MODULE_UNLOAD
/* What modules depend on me? */
struct list_head modules_which_use_me;
@@ -349,8 +343,9 @@
void (*exit)(void);
/* Reference counts */
- struct module_ref *ref;
+ struct module_ref ref[NR_CPUS];
#endif
+
};
#ifndef MODULE_ARCH_INIT
#define MODULE_ARCH_INIT {}
@@ -368,7 +363,6 @@
struct module *module_text_address(unsigned long addr);
struct module *__module_text_address(unsigned long addr);
int is_module_address(unsigned long addr);
-const char *supported_printable(int taint);
/* Returns 0 and fills in value, defined and namebuf, or -ERANGE if
symnum out of range. */
@@ -459,9 +453,6 @@
extern void module_update_markers(void);
-extern void module_update_tracepoints(void);
-extern int module_get_iter_tracepoints(struct tracepoint_iter *iter);
-
#else /* !CONFIG_MODULES... */
#define EXPORT_SYMBOL(sym)
#define EXPORT_SYMBOL_GPL(sym)
@@ -566,15 +557,6 @@
{
}
-static inline void module_update_tracepoints(void)
-{
-}
-
-static inline int module_get_iter_tracepoints(struct tracepoint_iter *iter)
-{
- return 0;
-}
-
#endif /* CONFIG_MODULES */
struct device_driver;

View File

@@ -1,67 +0,0 @@
--- a/linux/include/linux/module.h 2009-07-27 09:39:26.000000000 +0000
+++ b/linux/include/linux/module.h 2009-07-27 09:17:57.000000000 +0000
@@ -16,6 +16,7 @@
#include <linux/kobject.h>
#include <linux/moduleparam.h>
#include <linux/marker.h>
+#include <linux/tracepoint.h>
#include <asm/local.h>
#include <asm/module.h>
@@ -332,6 +333,11 @@
unsigned int num_markers;
#endif
+#ifdef CONFIG_TRACEPOINTS
+ struct tracepoint *tracepoints;
+ unsigned int num_tracepoints;
+#endif
+
#ifdef CONFIG_MODULE_UNLOAD
/* What modules depend on me? */
struct list_head modules_which_use_me;
@@ -343,9 +349,8 @@
void (*exit)(void);
/* Reference counts */
- struct module_ref ref[NR_CPUS];
+ struct module_ref *ref;
#endif
-
};
#ifndef MODULE_ARCH_INIT
#define MODULE_ARCH_INIT {}
@@ -363,6 +368,7 @@
struct module *module_text_address(unsigned long addr);
struct module *__module_text_address(unsigned long addr);
int is_module_address(unsigned long addr);
+const char *supported_printable(int taint);
/* Returns 0 and fills in value, defined and namebuf, or -ERANGE if
symnum out of range. */
@@ -453,6 +459,9 @@
extern void module_update_markers(void);
+extern void module_update_tracepoints(void);
+extern int module_get_iter_tracepoints(struct tracepoint_iter *iter);
+
#else /* !CONFIG_MODULES... */
#define EXPORT_SYMBOL(sym)
#define EXPORT_SYMBOL_GPL(sym)
@@ -557,6 +566,15 @@
{
}
+static inline void module_update_tracepoints(void)
+{
+}
+
+static inline int module_get_iter_tracepoints(struct tracepoint_iter *iter)
+{
+ return 0;
+}
+
#endif /* CONFIG_MODULES */
struct device_driver;

View File

@@ -1,41 +0,0 @@
diff -Naur grub-0.97.org/util/grub-install.in grub-0.97/util/grub-install.in
--- grub-0.97.org/util/grub-install.in 2004-07-24 20:57:31.000000000 +0200
+++ grub-0.97/util/grub-install.in 2009-08-14 20:01:20.000000000 +0200
@@ -96,12 +96,12 @@
# Break the device name into the disk part and the partition part.
case "$host_os" in
linux*)
- tmp_disk=`echo "$1" | sed -e 's%\([sh]d[a-z]\)[0-9]*$%\1%' \
+ tmp_disk=`echo "$1" | sed -e 's%\([vsh]d[a-z]\)[0-9]*$%\1%' \
-e 's%\(d[0-9]*\)p[0-9]*$%\1%' \
-e 's%\(fd[0-9]*\)$%\1%' \
-e 's%/part[0-9]*$%/disc%' \
-e 's%\(c[0-7]d[0-9]*\).*$%\1%'`
- tmp_part=`echo "$1" | sed -e 's%.*/[sh]d[a-z]\([0-9]*\)$%\1%' \
+ tmp_part=`echo "$1" | sed -e 's%.*/[vsh]d[a-z]\([0-9]*\)$%\1%' \
-e 's%.*d[0-9]*p%%' \
-e 's%.*/fd[0-9]*$%%' \
-e 's%.*/floppy/[0-9]*$%%' \
@@ -333,6 +333,10 @@
if test -f "$device_map"; then
:
else
+
+ tmp_disk=`echo "$install_device" | grep "/dev/vd"`
+ if test "x$tmp_disk" = x; then
+
# Create a safe temporary file.
test -n "$mklog" && log_file=`$mklog`
@@ -345,6 +349,11 @@
fi
rm -f $log_file
+
+ else
+ echo "Create fake device.map for vitio device $1" 1>&2
+ echo "(hd0) $install_device" > $device_map
+ fi
fi
# Make sure that there is no duplicated entry.

View File

@@ -1,21 +0,0 @@
diff -Naur hostapd-0.6.9.org/hostapd/ieee802_11.c hostapd-0.6.9/hostapd/ieee802_11.c
--- hostapd-0.6.9.org/hostapd/ieee802_11.c 2009-03-23 15:06:28.000000000 +0100
+++ hostapd-0.6.9/hostapd/ieee802_11.c 2009-07-07 23:13:37.000000000 +0200
@@ -1497,7 +1497,7 @@
hostapd_logger(hapd, mgmt->da, HOSTAPD_MODULE_IEEE80211,
HOSTAPD_LEVEL_NOTICE,
"did not acknowledge authentication response");
- return;
+ //return;
}
if (len < IEEE80211_HDRLEN + sizeof(mgmt->u.auth)) {
@@ -1571,7 +1571,7 @@
hostapd_logger(hapd, mgmt->da, HOSTAPD_MODULE_IEEE80211,
HOSTAPD_LEVEL_DEBUG,
"did not acknowledge association response");
- return;
+ //return;
}
if (len < IEEE80211_HDRLEN + (reassoc ? sizeof(mgmt->u.reassoc_resp) :

View File

@@ -1,65 +0,0 @@
--- linux-2.6.27.21/include/linux/skbuff.h 2009-07-22 08:06:40.000000000 +0000
+++ linux-2.6.27.21/include/linux/skbuff.h.imq 2009-07-22 08:12:55.000000000 +0000
@@ -28,6 +28,9 @@
#include <linux/rcupdate.h>
#include <linux/dmaengine.h>
#include <linux/hrtimer.h>
+#if defined(CONFIG_IMQ) || defined(CONFIG_IMQ_MODULE)
+#include <linux/imq.h>
+#endif
#define HAVE_ALLOC_SKB /* For the drivers to know */
#define HAVE_ALIGNABLE_SKB /* Ditto 8) */
@@ -274,6 +277,9 @@
* first. This is owned by whoever has the skb queued ATM.
*/
char cb[48];
+#if defined(CONFIG_IMQ) || defined(CONFIG_IMQ_MODULE)
+ void *cb_next;
+#endif
unsigned int len,
data_len;
@@ -304,6 +310,9 @@
struct nf_conntrack *nfct;
struct sk_buff *nfct_reasm;
#endif
+#if defined(CONFIG_IMQ) || defined(CONFIG_IMQ_MODULE)
+ struct nf_queue_entry *nf_queue_entry;
+#endif
#ifdef CONFIG_BRIDGE_NETFILTER
struct nf_bridge_info *nf_bridge;
#endif
@@ -330,6 +339,9 @@
proto_csum_blank:1;
#endif
/* 10-16 bit hole */
+#if defined(CONFIG_IMQ) || defined(CONFIG_IMQ_MODULE)
+ __u8 imq_flags:IMQ_F_BITS;
+#endif
#ifdef CONFIG_NET_DMA
dma_cookie_t dma_cookie;
@@ -374,6 +386,11 @@
#endif
}
+#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(struct sk_buff *skb);
extern struct sk_buff *__alloc_skb(unsigned int size,
@@ -1688,6 +1705,10 @@
dst->nfct_reasm = src->nfct_reasm;
nf_conntrack_get_reasm(src->nfct_reasm);
#endif
+#if defined(CONFIG_IMQ) || defined(CONFIG_IMQ_MODULE)
+ dst->imq_flags = src->imq_flags;
+ dst->nf_queue_entry = src->nf_queue_entry;
+#endif
#ifdef CONFIG_BRIDGE_NETFILTER
dst->nf_bridge = src->nf_bridge;
nf_bridge_get(src->nf_bridge);

View File

@@ -1,11 +0,0 @@
--- net/ipv4/netfilter/ip_conntrack_standalone.c~ 2006-12-12 01:50:40.000000000 +0000
+++ net/ipv4/netfilter/ip_conntrack_standalone.c 2006-12-16 16:29:28.000000000 +0000
@@ -804,7 +804,7 @@
#ifdef CONFIG_PROC_FS
ret = -ENOMEM;
- proc = proc_net_fops_create("ip_conntrack", 0440, &ct_file_ops);
+ proc = proc_net_fops_create("ip_conntrack", 0444, &ct_file_ops);
if (!proc) goto cleanup_init;
proc_exp = proc_net_fops_create("ip_conntrack_expect", 0440,

View File

@@ -1,481 +0,0 @@
diff -Naur iptables-1.4.1.1.org/extensions/.ipp2p-test iptables-1.4.1.1/extensions/.ipp2p-test
--- iptables-1.4.1.1.org/extensions/.ipp2p-test 1970-01-01 00:00:00.000000000 +0000
+++ iptables-1.4.1.1/extensions/.ipp2p-test 2008-09-22 21:58:41.000000000 +0000
@@ -0,0 +1,2 @@
+#! /bin/sh
+[ -f $KERNEL_DIR/include/linux/netfilter_ipv4/ipt_ipp2p.h ] && echo ipp2p
diff -Naur iptables-1.4.1.1.org/extensions/libipt_ipp2p.c iptables-1.4.1.1/extensions/libipt_ipp2p.c
--- iptables-1.4.1.1.org/extensions/libipt_ipp2p.c 1970-01-01 00:00:00.000000000 +0000
+++ iptables-1.4.1.1/extensions/libipt_ipp2p.c 2008-09-22 21:58:41.000000000 +0000
@@ -0,0 +1,424 @@
+#include <stdio.h>
+#include <netdb.h>
+#include <string.h>
+#include <stdlib.h>
+#include <getopt.h>
+#include <ctype.h>
+
+#include <iptables.h>
+
+#include <linux/netfilter_ipv4/ipt_ipp2p.h>
+
+#ifndef XTABLES_VERSION
+#define XTABLES_VERSION IPTABLES_VERSION
+#endif
+
+#ifdef IPT_LIB_DIR
+#define xtables_target iptables_target
+#define xtables_register_target register_target
+#endif
+
+static void
+help(void)
+{
+ printf(
+ "IPP2P v%s options:\n"
+ " --ipp2p Grab all known p2p packets\n"
+ " --edk [TCP&UDP] All known eDonkey/eMule/Overnet packets\n"
+ " --dc [TCP] All known Direct Connect packets\n"
+ " --kazaa [TCP&UDP] All known KaZaA packets\n"
+ " --gnu [TCP&UDP] All known Gnutella packets\n"
+ " --bit [TCP&UDP] All known BitTorrent packets\n"
+ " --apple [TCP] All known AppleJuice packets\n"
+ " --winmx [TCP] All known WinMX\n"
+ " --soul [TCP] All known SoulSeek\n"
+ " --ares [TCP] All known Ares\n\n"
+ " EXPERIMENTAL protocols (please send feedback to: ipp2p@ipp2p.org) :\n"
+ " --mute [TCP] All known Mute packets\n"
+ " --waste [TCP] All known Waste packets\n"
+ " --xdcc [TCP] All known XDCC packets (only xdcc login)\n\n"
+ " DEBUG SUPPPORT, use only if you know why\n"
+ " --debug Generate kernel debug output, THIS WILL SLOW DOWN THE FILTER\n"
+ "\nNote that the follwing options will have the same meaning:\n"
+ " '--ipp2p' is equal to '--edk --dc --kazaa --gnu --bit --apple --winmx --soul --ares'\n"
+ "\nIPP2P was intended for TCP only. Due to increasing usage of UDP we needed to change this.\n"
+ "You can now use -p udp to search UDP packets only or without -p switch to search UDP and TCP packets.\n"
+ "\nSee README included with this package for more details or visit http://www.ipp2p.org\n"
+ "\nExamples:\n"
+ " iptables -A FORWARD -m ipp2p --ipp2p -j MARK --set-mark 0x01\n"
+ " iptables -A FORWARD -p udp -m ipp2p --kazaa --bit -j DROP\n"
+ " iptables -A FORWARD -p tcp -m ipp2p --edk --soul -j DROP\n\n"
+ , IPP2P_VERSION);
+}
+
+static struct option opts[] = {
+ { "ipp2p", 0, 0, '1' },
+ { "edk", 0, 0, '2' },
+ { "dc", 0, 0, '7' },
+ { "gnu", 0, 0, '9' },
+ { "kazaa", 0, 0, 'a' },
+ { "bit", 0, 0, 'b' },
+ { "apple", 0, 0, 'c' },
+ { "soul", 0, 0, 'd' },
+ { "winmx", 0, 0, 'e' },
+ { "ares", 0, 0, 'f' },
+ { "mute", 0, 0, 'g' },
+ { "waste", 0, 0, 'h' },
+ { "xdcc", 0, 0, 'i' },
+ { "debug", 0, 0, 'j' },
+ {0}
+};
+
+
+static void
+#ifdef _XTABLES_H
+init(struct xt_entry_match *m)
+#else
+init(struct ipt_entry_match *t, unsigned int *nfcache)
+#endif
+{
+ struct ipt_p2p_info *info = (struct ipt_p2p_info *)m->data;
+
+#ifndef _XTABLES_H
+ *nfcache |= NFC_UNKNOWN;
+#endif
+
+ /*init the module with default values*/
+ info->cmd = 0;
+ info->debug = 0;
+
+}
+
+
+static int
+parse(int c, char **argv, int invert, unsigned int *flags,
+#ifdef _XTABLES_H
+ const void *entry, struct xt_entry_match **match)
+#else
+ const struct ipt_entry *entry, unsigned int *nfcache, struct ipt_entry_match **match)
+#endif
+{
+ struct ipt_p2p_info *info = (struct ipt_p2p_info *)(*match)->data;
+
+ switch (c) {
+ case '1': /*cmd: ipp2p*/
+ if ((*flags & SHORT_HAND_IPP2P) == SHORT_HAND_IPP2P)
+ exit_error(PARAMETER_PROBLEM,
+ "ipp2p: `--ipp2p' may only be "
+ "specified once!");
+
+/* if ((*flags & SHORT_HAND_DATA) == SHORT_HAND_DATA)
+ exit_error(PARAMETER_PROBLEM,
+ "ipp2p: `--ipp2p-data' may only be "
+ "specified alone!");
+*/
+
+ if ((*flags) != 0)
+ exit_error(PARAMETER_PROBLEM,
+ "ipp2p: `--ipp2p' may only be "
+ "specified alone!");
+ if (invert) exit_error(PARAMETER_PROBLEM, "ipp2p: invert [!] is not allowed!");
+ *flags += SHORT_HAND_IPP2P;
+ info->cmd = *flags;
+ break;
+
+ case '2': /*cmd: edk*/
+ if ((*flags & IPP2P_EDK) == IPP2P_EDK)
+ exit_error(PARAMETER_PROBLEM,
+ "ipp2p: `--edk' may only be "
+ "specified once");
+ if ((*flags & SHORT_HAND_IPP2P) == SHORT_HAND_IPP2P)
+ exit_error(PARAMETER_PROBLEM,
+ "ipp2p: `--ipp2p' may only be "
+ "specified alone!");
+/* if ((*flags & SHORT_HAND_DATA) == SHORT_HAND_DATA)
+ exit_error(PARAMETER_PROBLEM,
+ "ipp2p: `--ipp2p-data' may only be "
+ "specified alone!");*/
+ if ((*flags & IPP2P_DATA_EDK) == IPP2P_DATA_EDK)
+ exit_error(PARAMETER_PROBLEM,
+ "ipp2p: use `--edk' OR `--edk-data' but not both of them!");
+ if (invert) exit_error(PARAMETER_PROBLEM, "ipp2p: invert [!] is not allowed!");
+ *flags += IPP2P_EDK;
+ info->cmd = *flags;
+ break;
+
+
+ case '7': /*cmd: dc*/
+ if ((*flags & IPP2P_DC) == IPP2P_DC)
+ exit_error(PARAMETER_PROBLEM,
+ "ipp2p: `--dc' may only be "
+ "specified once!");
+ if ((*flags & SHORT_HAND_IPP2P) == SHORT_HAND_IPP2P)
+ exit_error(PARAMETER_PROBLEM,
+ "ipp2p: `--ipp2p' may only be "
+ "specified alone!");
+/* if ((*flags & SHORT_HAND_DATA) == SHORT_HAND_DATA)
+ exit_error(PARAMETER_PROBLEM,
+ "ipp2p: `--ipp2p-data' may only be "
+ "specified alone!");*/
+ if ((*flags & IPP2P_DATA_DC) == IPP2P_DATA_DC)
+ exit_error(PARAMETER_PROBLEM,
+ "ipp2p: use `--dc' OR `--dc-data' but not both of them!");
+ if (invert) exit_error(PARAMETER_PROBLEM, "ipp2p: invert [!] is not allowed!");
+ *flags += IPP2P_DC;
+ info->cmd = *flags;
+ break;
+
+
+ case '9': /*cmd: gnu*/
+ if ((*flags & IPP2P_GNU) == IPP2P_GNU)
+ exit_error(PARAMETER_PROBLEM,
+ "ipp2p: `--gnu' may only be "
+ "specified once!");
+/* if ((*flags & SHORT_HAND_DATA) == SHORT_HAND_DATA)
+ exit_error(PARAMETER_PROBLEM,
+ "ipp2p: `--ipp2p-data' may only be "
+ "specified alone!");*/
+ if ((*flags & SHORT_HAND_IPP2P) == SHORT_HAND_IPP2P)
+ exit_error(PARAMETER_PROBLEM,
+ "ipp2p: `--ipp2p' may only be "
+ "specified alone!");
+ if ((*flags & IPP2P_DATA_GNU) == IPP2P_DATA_GNU)
+ exit_error(PARAMETER_PROBLEM,
+ "ipp2p: use `--gnu' OR `--gnu-data' but not both of them!");
+ if (invert) exit_error(PARAMETER_PROBLEM, "ipp2p: invert [!] is not allowed!");
+ *flags += IPP2P_GNU;
+ info->cmd = *flags;
+ break;
+
+ case 'a': /*cmd: kazaa*/
+ if ((*flags & IPP2P_KAZAA) == IPP2P_KAZAA)
+ exit_error(PARAMETER_PROBLEM,
+ "ipp2p: `--kazaa' may only be "
+ "specified once!");
+/* if ((*flags & SHORT_HAND_DATA) == SHORT_HAND_DATA)
+ exit_error(PARAMETER_PROBLEM,
+ "ipp2p: `--ipp2p-data' may only be "
+ "specified alone!");*/
+ if ((*flags & SHORT_HAND_IPP2P) == SHORT_HAND_IPP2P)
+ exit_error(PARAMETER_PROBLEM,
+ "ipp2p: `--ipp2p' may only be "
+ "specified alone!");
+ if ((*flags & IPP2P_DATA_KAZAA) == IPP2P_DATA_KAZAA)
+ exit_error(PARAMETER_PROBLEM,
+ "ipp2p: use `--kazaa' OR `--kazaa-data' but not both of them!");
+ if (invert) exit_error(PARAMETER_PROBLEM, "ipp2p: invert [!] is not allowed!");
+ *flags += IPP2P_KAZAA;
+ info->cmd = *flags;
+ break;
+
+ case 'b': /*cmd: bit*/
+ if ((*flags & IPP2P_BIT) == IPP2P_BIT)
+ exit_error(PARAMETER_PROBLEM,
+ "ipp2p: `--bit' may only be "
+ "specified once!");
+ if ((*flags & SHORT_HAND_IPP2P) == SHORT_HAND_IPP2P)
+ exit_error(PARAMETER_PROBLEM,
+ "ipp2p: `--ipp2p' may only be "
+ "specified alone!");
+ if (invert) exit_error(PARAMETER_PROBLEM, "ipp2p: invert [!] is not allowed!");
+ *flags += IPP2P_BIT;
+ info->cmd = *flags;
+ break;
+
+ case 'c': /*cmd: apple*/
+ if ((*flags & IPP2P_APPLE) == IPP2P_APPLE)
+ exit_error(PARAMETER_PROBLEM,
+ "ipp2p: `--apple' may only be "
+ "specified once!");
+ if ((*flags & SHORT_HAND_IPP2P) == SHORT_HAND_IPP2P)
+ exit_error(PARAMETER_PROBLEM,
+ "ipp2p: `--ipp2p' may only be "
+ "specified alone!");
+ if (invert) exit_error(PARAMETER_PROBLEM, "ipp2p: invert [!] is not allowed!");
+ *flags += IPP2P_APPLE;
+ info->cmd = *flags;
+ break;
+
+
+ case 'd': /*cmd: soul*/
+ if ((*flags & IPP2P_SOUL) == IPP2P_SOUL)
+ exit_error(PARAMETER_PROBLEM,
+ "ipp2p: `--soul' may only be "
+ "specified once!");
+ if ((*flags & SHORT_HAND_IPP2P) == SHORT_HAND_IPP2P)
+ exit_error(PARAMETER_PROBLEM,
+ "ipp2p: `--ipp2p' may only be "
+ "specified alone!");
+ if (invert) exit_error(PARAMETER_PROBLEM, "ipp2p: invert [!] is not allowed!");
+ *flags += IPP2P_SOUL;
+ info->cmd = *flags;
+ break;
+
+
+ case 'e': /*cmd: winmx*/
+ if ((*flags & IPP2P_WINMX) == IPP2P_WINMX)
+ exit_error(PARAMETER_PROBLEM,
+ "ipp2p: `--winmx' may only be "
+ "specified once!");
+ if ((*flags & SHORT_HAND_IPP2P) == SHORT_HAND_IPP2P)
+ exit_error(PARAMETER_PROBLEM,
+ "ipp2p: `--ipp2p' may only be "
+ "specified alone!");
+ if (invert) exit_error(PARAMETER_PROBLEM, "ipp2p: invert [!] is not allowed!");
+ *flags += IPP2P_WINMX;
+ info->cmd = *flags;
+ break;
+
+ case 'f': /*cmd: ares*/
+ if ((*flags & IPP2P_ARES) == IPP2P_ARES)
+ exit_error(PARAMETER_PROBLEM,
+ "ipp2p: `--ares' may only be "
+ "specified once!");
+ if ((*flags & SHORT_HAND_IPP2P) == SHORT_HAND_IPP2P)
+ exit_error(PARAMETER_PROBLEM,
+ "ipp2p: `--ipp2p' may only be "
+ "specified alone!");
+ if (invert) exit_error(PARAMETER_PROBLEM, "ipp2p: invert [!] is not allowed!");
+ *flags += IPP2P_ARES;
+ info->cmd = *flags;
+ break;
+
+ case 'g': /*cmd: mute*/
+ if ((*flags & IPP2P_MUTE) == IPP2P_MUTE)
+ exit_error(PARAMETER_PROBLEM,
+ "ipp2p: `--mute' may only be "
+ "specified once!");
+ if (invert) exit_error(PARAMETER_PROBLEM, "ipp2p: invert [!] is not allowed!");
+ *flags += IPP2P_MUTE;
+ info->cmd = *flags;
+ break;
+ case 'h': /*cmd: waste*/
+ if ((*flags & IPP2P_WASTE) == IPP2P_WASTE)
+ exit_error(PARAMETER_PROBLEM,
+ "ipp2p: `--waste' may only be "
+ "specified once!");
+ if (invert) exit_error(PARAMETER_PROBLEM, "ipp2p: invert [!] is not allowed!");
+ *flags += IPP2P_WASTE;
+ info->cmd = *flags;
+ break;
+ case 'i': /*cmd: xdcc*/
+ if ((*flags & IPP2P_XDCC) == IPP2P_XDCC)
+ exit_error(PARAMETER_PROBLEM,
+ "ipp2p: `--ares' may only be "
+ "specified once!");
+ if (invert) exit_error(PARAMETER_PROBLEM, "ipp2p: invert [!] is not allowed!");
+ *flags += IPP2P_XDCC;
+ info->cmd = *flags;
+ break;
+
+ case 'j': /*cmd: debug*/
+ if (invert) exit_error(PARAMETER_PROBLEM, "ipp2p: invert [!] is not allowed!");
+ info->debug = 1;
+ break;
+
+ default:
+// exit_error(PARAMETER_PROBLEM,
+// "\nipp2p-parameter problem: for ipp2p usage type: iptables -m ipp2p --help\n");
+ return 0;
+ }
+ return 1;
+}
+
+
+static void
+final_check(unsigned int flags)
+{
+ if (!flags)
+ exit_error(PARAMETER_PROBLEM,
+ "\nipp2p-parameter problem: for ipp2p usage type: iptables -m ipp2p --help\n");
+}
+
+static void
+#ifdef _XTABLES_H
+print(const void *ip,
+ const struct xt_entry_match *match,
+#else
+print(const struct ipt_ip *ip,
+ const struct ipt_entry_match *match,
+#endif
+ int numeric)
+{
+ struct ipt_p2p_info *info = (struct ipt_p2p_info *)match->data;
+
+ printf("ipp2p v%s", IPP2P_VERSION);
+ if ((info->cmd & SHORT_HAND_IPP2P) == SHORT_HAND_IPP2P) printf(" --ipp2p");
+// if ((info->cmd & SHORT_HAND_DATA) == SHORT_HAND_DATA) printf(" --ipp2p-data");
+ if ((info->cmd & IPP2P_KAZAA) == IPP2P_KAZAA) printf(" --kazaa");
+// if ((info->cmd & IPP2P_DATA_KAZAA) == IPP2P_DATA_KAZAA) printf(" --kazaa-data");
+// if ((info->cmd & IPP2P_DATA_GNU) == IPP2P_DATA_GNU) printf(" --gnu-data");
+ if ((info->cmd & IPP2P_GNU) == IPP2P_GNU) printf(" --gnu");
+ if ((info->cmd & IPP2P_EDK) == IPP2P_EDK) printf(" --edk");
+// if ((info->cmd & IPP2P_DATA_EDK) == IPP2P_DATA_EDK) printf(" --edk-data");
+// if ((info->cmd & IPP2P_DATA_DC) == IPP2P_DATA_DC) printf(" --dc-data");
+ if ((info->cmd & IPP2P_DC) == IPP2P_DC) printf(" --dc");
+ if ((info->cmd & IPP2P_BIT) == IPP2P_BIT) printf(" --bit");
+ if ((info->cmd & IPP2P_APPLE) == IPP2P_APPLE) printf(" --apple");
+ if ((info->cmd & IPP2P_SOUL) == IPP2P_SOUL) printf(" --soul");
+ if ((info->cmd & IPP2P_WINMX) == IPP2P_WINMX) printf(" --winmx");
+ if ((info->cmd & IPP2P_ARES) == IPP2P_ARES) printf(" --ares");
+ if ((info->cmd & IPP2P_MUTE) == IPP2P_MUTE) printf(" --mute");
+ if ((info->cmd & IPP2P_WASTE) == IPP2P_WASTE) printf(" --waste");
+ if ((info->cmd & IPP2P_XDCC) == IPP2P_XDCC) printf(" --xdcc");
+ if (info->debug != 0) printf(" --debug");
+ printf(" ");
+}
+
+static void
+#ifdef _XTABLES_H
+save(const void *ip,
+ const struct xt_entry_match *match)
+#else
+save(const struct ipt_ip *ip,
+ const struct ipt_entry_match *match)
+#endif
+{
+ struct ipt_p2p_info *info = (struct ipt_p2p_info *)match->data;
+
+ if ((info->cmd & SHORT_HAND_IPP2P) == SHORT_HAND_IPP2P) printf("--ipp2p ");
+// if ((info->cmd & SHORT_HAND_DATA) == SHORT_HAND_DATA) printf("--ipp2p-data ");
+ if ((info->cmd & IPP2P_KAZAA) == IPP2P_KAZAA) printf("--kazaa ");
+// if ((info->cmd & IPP2P_DATA_KAZAA) == IPP2P_DATA_KAZAA) printf("--kazaa-data ");
+// if ((info->cmd & IPP2P_DATA_GNU) == IPP2P_DATA_GNU) printf("--gnu-data ");
+ if ((info->cmd & IPP2P_GNU) == IPP2P_GNU) printf("--gnu ");
+ if ((info->cmd & IPP2P_EDK) == IPP2P_EDK) printf("--edk ");
+// if ((info->cmd & IPP2P_DATA_EDK) == IPP2P_DATA_EDK) printf("--edk-data ");
+// if ((info->cmd & IPP2P_DATA_DC) == IPP2P_DATA_DC) printf("--dc-data ");
+ if ((info->cmd & IPP2P_DC) == IPP2P_DC) printf("--dc ");
+ if ((info->cmd & IPP2P_BIT) == IPP2P_BIT) printf("--bit ");
+ if ((info->cmd & IPP2P_APPLE) == IPP2P_APPLE) printf("--apple ");
+ if ((info->cmd & IPP2P_SOUL) == IPP2P_SOUL) printf("--soul ");
+ if ((info->cmd & IPP2P_WINMX) == IPP2P_WINMX) printf("--winmx ");
+ if ((info->cmd & IPP2P_ARES) == IPP2P_ARES) printf("--ares ");
+ if ((info->cmd & IPP2P_MUTE) == IPP2P_MUTE) printf(" --mute");
+ if ((info->cmd & IPP2P_WASTE) == IPP2P_WASTE) printf(" --waste");
+ if ((info->cmd & IPP2P_XDCC) == IPP2P_XDCC) printf(" --xdcc");
+ if (info->debug != 0) printf("--debug ");
+}
+
+
+static
+struct xtables_match ipp2p=
+{
+ .next = NULL,
+ .name = "ipp2p",
+ .version = XTABLES_VERSION,
+ .size = IPT_ALIGN(sizeof(struct ipt_p2p_info)),
+ .userspacesize = IPT_ALIGN(sizeof(struct ipt_p2p_info)),
+ .help = &help,
+ .init = &init,
+ .parse = &parse,
+ .final_check = &final_check,
+ .print = &print,
+ .save = &save,
+ .extra_opts = opts
+};
+
+
+
+void _init(void)
+{
+ xtables_register_match(&ipp2p);
+}
+
diff -Naur iptables-1.4.1.1.org/extensions/libipt_ipp2p.man iptables-1.4.1.1/extensions/libipt_ipp2p.man
--- iptables-1.4.1.1.org/extensions/libipt_ipp2p.man 1970-01-01 00:00:00.000000000 +0000
+++ iptables-1.4.1.1/extensions/libipt_ipp2p.man 2008-09-22 21:58:41.000000000 +0000
@@ -0,0 +1,43 @@
+This module matches certain packets in P2P flows. It is not
+designed to match all packets belonging to a P2P connection -
+use IPP2P together with CONNMARK for this purpose. Also visit
+http://www.ipp2p.org for detailed information.
+
+Use it together with -p tcp or -p udp to search these protocols
+only or without -p switch to search packets of both protocols.
+
+IPP2P provides the following options:
+.TP
+.B "--edk "
+Matches as many eDonkey/eMule packets as possible.
+.TP
+.B "--kazaa "
+Matches as many KaZaA packets as possible.
+.TP
+.B "--gnu "
+Matches as many Gnutella packets as possible.
+.TP
+.B "--dc "
+Matches as many Direct Connect packets as possible.
+.TP
+.B "--bit "
+Matches BitTorrent packets.
+.TP
+.B "--apple "
+Matches AppleJuice packets.
+.TP
+.B "--soul "
+Matches some SoulSeek packets. Considered as beta, use careful!
+.TP
+.B "--winmx "
+Matches some WinMX packets. Considered as beta, use careful!
+.TP
+.B "--ares "
+Matches Ares and AresLite packets. Use together with -j DROP only.
+.TP
+.B "--ipp2p "
+Short hand for: --edk --kazaa --gnu --dc
+.TP
+.B "--debug "
+Prints some information about each hit into kernel logfile. May
+produce huge logfiles so beware!

View File

@@ -1,99 +0,0 @@
diff -Naur iptables-1.4.2/extensions/.IMQ-test iptables/extensions/.IMQ-test
--- iptables-1.4.2/extensions/.IMQ-test 1970-01-01 10:00:00.000000000 +1000
+++ iptables/extensions/.IMQ-test 2008-06-08 22:41:49.000000000 +1000
@@ -0,0 +1,3 @@
+#!/bin/sh
+# True if IMQ target patch is applied.
+[ -f $KERNEL_DIR/include/linux/netfilter/xt_IMQ.h ] && echo IMQ
diff -Naur iptables-1.4.2/extensions/libipt_IMQ.c iptables/extensions/libipt_IMQ.c
--- iptables-1.4.2/extensions/libipt_IMQ.c 1970-01-01 10:00:00.000000000 +1000
+++ iptables/extensions/libipt_IMQ.c 2008-06-08 22:46:25.000000000 +1000
@@ -0,0 +1,88 @@
+/* Shared library add-on to iptables to add IMQ target support. */
+#include <stdio.h>
+#include <string.h>
+#include <stdlib.h>
+#include <getopt.h>
+
+#include <xtables.h>
+#include <linux/netfilter/x_tables.h>
+#include <linux/netfilter/xt_IMQ.h>
+
+/* Function which prints out usage message. */
+static void IMQ_help(void)
+{
+ printf(
+"IMQ target v%s options:\n"
+" --todev <N> enqueue to imq<N>, defaults to 0\n",
+XTABLES_VERSION);
+}
+
+static struct option IMQ_opts[] = {
+ { "todev", 1, 0, '1' },
+ { 0 }
+};
+
+/* Initialize the target. */
+static void IMQ_init(struct xt_entry_target *t)
+{
+ struct xt_imq_info *mr = (struct xt_imq_info*)t->data;
+
+ mr->todev = 0;
+}
+
+/* Function which parses command options; returns true if it
+ ate an option */
+static int IMQ_parse(int c, char **argv, int invert, unsigned int *flags,
+ const void *entry, struct xt_entry_target **target)
+{
+ struct xt_imq_info *mr = (struct xt_imq_info*)(*target)->data;
+
+ switch(c) {
+ case '1':
+ if (check_inverse(optarg, &invert, NULL, 0))
+ exit_error(PARAMETER_PROBLEM,
+ "Unexpected `!' after --todev");
+ mr->todev=atoi(optarg);
+ break;
+ default:
+ return 0;
+ }
+ return 1;
+}
+
+/* Prints out the targinfo. */
+static void IMQ_print(const void *ip,
+ const struct xt_entry_target *target,
+ int numeric)
+{
+ struct xt_imq_info *mr = (struct xt_imq_info*)target->data;
+
+ printf("IMQ: todev %u ", mr->todev);
+}
+
+/* Saves the union ipt_targinfo in parsable form to stdout. */
+static void IMQ_save(const void *ip, const struct xt_entry_target *target)
+{
+ struct xt_imq_info *mr = (struct xt_imq_info*)target->data;
+
+ printf("--todev %u", mr->todev);
+}
+
+static struct xtables_target imq = {
+ .name = "IMQ",
+ .version = XTABLES_VERSION,
+ .family = PF_INET,
+ .size = XT_ALIGN(sizeof(struct xt_imq_info)),
+ .userspacesize = XT_ALIGN(sizeof(struct xt_imq_info)),
+ .help = IMQ_help,
+ .init = IMQ_init,
+ .parse = IMQ_parse,
+ .print = IMQ_print,
+ .save = IMQ_save,
+ .extra_opts = IMQ_opts,
+};
+
+void _init(void)
+{
+ xtables_register_target(&imq);
+}

View File

@@ -1,203 +0,0 @@
diff -Nur linux-2.6.24.old/drivers/leds/Kconfig linux-2.6.24/drivers/leds/Kconfig
--- linux-2.6.24.old/drivers/leds/Kconfig 2008-01-24 23:58:37.000000000 +0100
+++ linux-2.6.24/drivers/leds/Kconfig 2008-05-24 09:32:18.000000000 +0200
@@ -81,6 +81,12 @@
help
This option enables support for the PCEngines WRAP programmable LEDs.
+config LEDS_ALIX
+ tristate "LED Support for the ALIX 2/3 boards"
+ depends on LEDS_CLASS
+ help
+ This option enables support for the three LEDs on the PCEngines ALIX 2/3 boards.
+
config LEDS_H1940
tristate "LED Support for iPAQ H1940 device"
depends on LEDS_CLASS && ARCH_H1940
diff -Nur linux-2.6.24.old/drivers/leds/leds-alix.c linux-2.6.24/drivers/leds/leds-alix.c
--- linux-2.6.24.old/drivers/leds/leds-alix.c 1970-01-01 01:00:00.000000000 +0100
+++ linux-2.6.24/drivers/leds/leds-alix.c 2008-05-24 09:32:18.000000000 +0200
@@ -0,0 +1,172 @@
+/*
+ * LEDs driver for PCEngines ALIX 2/3 series
+ *
+ * Copyright (C) 2007 Petr Liebman
+ *
+ * Based on leds-wrap.c
+ *
+ * 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/init.h>
+#include <linux/platform_device.h>
+#include <linux/leds.h>
+#include <linux/err.h>
+#include <asm/io.h>
+
+#define DRVNAME "alix-led"
+
+#define ALIX_LED1_PORT (0x6100)
+#define ALIX_LED1_ON (1<<22)
+#define ALIX_LED1_OFF (1<<6)
+
+#define ALIX_LED2_PORT (0x6180)
+#define ALIX_LED2_ON (1<<25)
+#define ALIX_LED2_OFF (1<<9)
+
+#define ALIX_LED3_PORT (0x6180)
+#define ALIX_LED3_ON (1<<27)
+#define ALIX_LED3_OFF (1<<11)
+
+
+static struct platform_device *pdev;
+
+static void alix_led_set_1(struct led_classdev *led_cdev,
+ enum led_brightness value)
+{
+ if (value)
+ outl(ALIX_LED1_ON, ALIX_LED1_PORT);
+ else
+ outl(ALIX_LED1_OFF, ALIX_LED1_PORT);
+}
+
+static void alix_led_set_2(struct led_classdev *led_cdev,
+ enum led_brightness value)
+{
+ if (value)
+ outl(ALIX_LED2_ON, ALIX_LED2_PORT);
+ else
+ outl(ALIX_LED2_OFF, ALIX_LED2_PORT);
+}
+
+static void alix_led_set_3(struct led_classdev *led_cdev,
+ enum led_brightness value)
+{
+ if (value)
+ outl(ALIX_LED3_ON, ALIX_LED3_PORT);
+ else
+ outl(ALIX_LED3_OFF, ALIX_LED3_PORT);
+}
+
+static struct led_classdev alix_led_1 = {
+ .name = "alix:1",
+ .brightness_set = alix_led_set_1,
+};
+
+static struct led_classdev alix_led_2 = {
+ .name = "alix:2",
+ .brightness_set = alix_led_set_2,
+};
+
+static struct led_classdev alix_led_3 = {
+ .name = "alix:3",
+ .brightness_set = alix_led_set_3,
+};
+
+
+#ifdef CONFIG_PM
+static int alix_led_suspend(struct platform_device *dev,
+ pm_message_t state)
+{
+ led_classdev_suspend(&alix_led_1);
+ led_classdev_suspend(&alix_led_2);
+ led_classdev_suspend(&alix_led_3);
+ return 0;
+}
+
+static int alix_led_resume(struct platform_device *dev)
+{
+ led_classdev_resume(&alix_led_1);
+ led_classdev_resume(&alix_led_2);
+ led_classdev_resume(&alix_led_3);
+ return 0;
+}
+#else
+#define alix_led_suspend NULL
+#define alix_led_resume NULL
+#endif
+
+static int alix_led_probe(struct platform_device *pdev)
+{
+ int ret;
+
+ ret = led_classdev_register(&pdev->dev, &alix_led_1);
+ if (ret >= 0)
+ {
+ ret = led_classdev_register(&pdev->dev, &alix_led_2);
+ if (ret >= 0)
+ {
+ ret = led_classdev_register(&pdev->dev, &alix_led_3);
+ if (ret < 0)
+ led_classdev_unregister(&alix_led_2);
+ }
+ if (ret < 0)
+ led_classdev_unregister(&alix_led_1);
+ }
+ return ret;
+}
+
+static int alix_led_remove(struct platform_device *pdev)
+{
+ led_classdev_unregister(&alix_led_1);
+ led_classdev_unregister(&alix_led_2);
+ led_classdev_unregister(&alix_led_3);
+ return 0;
+}
+
+static struct platform_driver alix_led_driver = {
+ .probe = alix_led_probe,
+ .remove = alix_led_remove,
+ .suspend = alix_led_suspend,
+ .resume = alix_led_resume,
+ .driver = {
+ .name = DRVNAME,
+ .owner = THIS_MODULE,
+ },
+};
+
+static int __init alix_led_init(void)
+{
+ int ret;
+
+ ret = platform_driver_register(&alix_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(&alix_led_driver);
+ goto out;
+ }
+
+out:
+ return ret;
+}
+
+static void __exit alix_led_exit(void)
+{
+ platform_device_unregister(pdev);
+ platform_driver_unregister(&alix_led_driver);
+}
+
+module_init(alix_led_init);
+module_exit(alix_led_exit);
+
+MODULE_AUTHOR("Petr Liebman");
+MODULE_DESCRIPTION("PCEngines ALIX LED driver");
+MODULE_LICENSE("GPL");
+
diff -Nur linux-2.6.24.old/drivers/leds/Makefile linux-2.6.24/drivers/leds/Makefile
--- linux-2.6.24.old/drivers/leds/Makefile 2008-01-24 23:58:37.000000000 +0100
+++ linux-2.6.24/drivers/leds/Makefile 2008-05-24 08:34:40.000000000 +0200
@@ -14,6 +14,7 @@
obj-$(CONFIG_LEDS_AMS_DELTA) += leds-ams-delta.o
obj-$(CONFIG_LEDS_NET48XX) += leds-net48xx.o
obj-$(CONFIG_LEDS_WRAP) += leds-wrap.o
+obj-$(CONFIG_LEDS_ALIX) += leds-alix.o
obj-$(CONFIG_LEDS_H1940) += leds-h1940.o
obj-$(CONFIG_LEDS_COBALT_QUBE) += leds-cobalt-qube.o
obj-$(CONFIG_LEDS_COBALT_RAQ) += leds-cobalt-raq.o

View File

@@ -1,12 +0,0 @@
diff -Naur linux-2.6.27.45.org/arch/x86/kernel/cpu/cpufreq/p4-clockmod.c linux-2.6.27.45/arch/x86/kernel/cpu/cpufreq/p4-clockmod.c
--- linux-2.6.27.45.org/arch/x86/kernel/cpu/cpufreq/p4-clockmod.c 2010-01-29 00:21:45.000000000 +0100
+++ linux-2.6.27.45/arch/x86/kernel/cpu/cpufreq/p4-clockmod.c 2010-02-11 15:21:39.000000000 +0100
@@ -160,6 +160,8 @@
switch (c->x86_model) {
case 0x0E: /* Core */
case 0x0F: /* Core Duo */
+ case 0x16: /* Celeron Core */
+ case 0x1c: /* Atom */
p4clockmod_driver.flags |= CPUFREQ_CONST_LOOPS;
return speedstep_get_processor_frequency(SPEEDSTEP_PROCESSOR_PCORE);
case 0x0D: /* Pentium M (Dothan) */

View File

@@ -1,58 +0,0 @@
diff -Naur linux-2.6.27.42.org/drivers/hwmon/coretemp.c linux-2.6.27.42/drivers/hwmon/coretemp.c
--- linux-2.6.27.42.org/drivers/hwmon/coretemp.c 2009-12-18 22:31:34.000000000 +0100
+++ linux-2.6.27.42/drivers/hwmon/coretemp.c 2010-02-07 12:36:39.000000000 +0100
@@ -1,7 +1,7 @@
/*
* coretemp.c - Linux kernel module for hardware monitoring
*
- * Copyright (C) 2007 Rudolf Marek <r.marek@assembler.cz>
+ * Copyright (C) 2007, 2008 Rudolf Marek <r.marek@assembler.cz>
*
* Inspired from many hwmon drivers
*
@@ -244,8 +244,14 @@
}
}
- data->tjmax = adjust_tjmax(c, data->id, &pdev->dev);
- platform_set_drvdata(pdev, data);
+ /* Intel Atom has only fixed TjMax at 95C */
+
+ if (c->x86_model == 0x1c) {
+ data->tjmax = 95000;
+ } else {
+ /* Adjust the TjMax for the rest of Core2 family */
+ data->tjmax = adjust_tjmax(c, data->id, &pdev->dev);
+ }
/* read the still undocumented IA32_TEMPERATURE_TARGET it exists
on older CPUs but not in this register */
@@ -265,6 +271,8 @@
}
}
+ platform_set_drvdata(pdev, data);
+
if ((err = sysfs_create_group(&pdev->dev.kobj, &coretemp_group)))
goto exit_dev;
@@ -409,15 +417,15 @@
err = platform_driver_register(&coretemp_driver);
if (err)
goto exit;
-
+
for_each_online_cpu(i) {
struct cpuinfo_x86 *c = &cpu_data(i);
- /* check if family 6, models 0xe, 0xf, 0x16, 0x17, 0x1A */
+ /* check if family 6, models 0xe, 0xf, 0x16, 0x17, 0x1A, 0x1c */
if ((c->cpuid_level < 0) || (c->x86 != 0x6) ||
!((c->x86_model == 0xe) || (c->x86_model == 0xf) ||
- (c->x86_model == 0x16) || (c->x86_model == 0x17) ||
- (c->x86_model == 0x1A))) {
+ (c->x86_model == 0x16) || (c->x86_model == 0x17) ||
+ (c->x86_model == 0x1c) || (c->x86_model == 0x1A))) {
/* supported CPU not found, but report the unknown
family 6 CPU */

File diff suppressed because it is too large Load Diff

View File

@@ -1,980 +0,0 @@
diff -Naur linux-2.6.27.19.org/include/linux/netfilter_ipv4/ipt_ipp2p.h linux-2.6.27.19/include/linux/netfilter_ipv4/ipt_ipp2p.h
--- linux-2.6.27.19.org/include/linux/netfilter_ipv4/ipt_ipp2p.h 1970-01-01 01:00:00.000000000 +0100
+++ linux-2.6.27.19/include/linux/netfilter_ipv4/ipt_ipp2p.h 2009-03-17 19:31:50.000000000 +0100
@@ -0,0 +1,31 @@
+#ifndef __IPT_IPP2P_H
+#define __IPT_IPP2P_H
+#define IPP2P_VERSION "0.8.2-pomng"
+
+struct ipt_p2p_info {
+ int cmd;
+ int debug;
+};
+
+#endif //__IPT_IPP2P_H
+
+#define SHORT_HAND_IPP2P 1 /* --ipp2p switch*/
+//#define SHORT_HAND_DATA 4 /* --ipp2p-data switch*/
+#define SHORT_HAND_NONE 5 /* no short hand*/
+
+#define IPP2P_EDK (1 << 1)
+#define IPP2P_DATA_KAZAA (1 << 2)
+#define IPP2P_DATA_EDK (1 << 3)
+#define IPP2P_DATA_DC (1 << 4)
+#define IPP2P_DC (1 << 5)
+#define IPP2P_DATA_GNU (1 << 6)
+#define IPP2P_GNU (1 << 7)
+#define IPP2P_KAZAA (1 << 8)
+#define IPP2P_BIT (1 << 9)
+#define IPP2P_APPLE (1 << 10)
+#define IPP2P_SOUL (1 << 11)
+#define IPP2P_WINMX (1 << 12)
+#define IPP2P_ARES (1 << 13)
+#define IPP2P_MUTE (1 << 14)
+#define IPP2P_WASTE (1 << 15)
+#define IPP2P_XDCC (1 << 16)
diff -Naur linux-2.6.27.19.org/net/ipv4/netfilter/ipt_ipp2p.c linux-2.6.27.19/net/ipv4/netfilter/ipt_ipp2p.c
--- linux-2.6.27.19.org/net/ipv4/netfilter/ipt_ipp2p.c 1970-01-01 01:00:00.000000000 +0100
+++ linux-2.6.27.19/net/ipv4/netfilter/ipt_ipp2p.c 2009-03-17 19:31:50.000000000 +0100
@@ -0,0 +1,911 @@
+#if defined(MODVERSIONS)
+#include <linux/modversions.h>
+#endif
+#include <linux/module.h>
+#include <linux/version.h>
+#include <linux/netfilter_ipv4/ip_tables.h>
+#include <linux/netfilter_ipv4/ipt_ipp2p.h>
+#include <net/tcp.h>
+#include <net/udp.h>
+
+#define get_u8(X,O) (*(__u8 *)(X + O))
+#define get_u16(X,O) (*(__u16 *)(X + O))
+#define get_u32(X,O) (*(__u32 *)(X + O))
+
+MODULE_AUTHOR("Eicke Friedrich/Klaus Degner <ipp2p@ipp2p.org>");
+MODULE_DESCRIPTION("An extension to iptables to identify P2P traffic.");
+MODULE_LICENSE("GPL");
+
+
+/*Search for UDP eDonkey/eMule/Kad commands*/
+int
+udp_search_edk (unsigned char *haystack, int packet_len)
+{
+ unsigned char *t = haystack;
+ t += 8;
+
+ switch (t[0]) {
+ case 0xe3:
+ { /*edonkey*/
+ switch (t[1])
+ {
+ /* client -> server status request */
+ case 0x96:
+ if (packet_len == 14) return ((IPP2P_EDK * 100) + 50);
+ break;
+ /* server -> client status request */
+ case 0x97: if (packet_len == 42) return ((IPP2P_EDK * 100) + 51);
+ break;
+ /* server description request */
+ /* e3 2a ff f0 .. | size == 6 */
+ case 0xa2: if ( (packet_len == 14) && ( get_u16(t,2) == __constant_htons(0xfff0) ) ) return ((IPP2P_EDK * 100) + 52);
+ break;
+ /* server description response */
+ /* e3 a3 ff f0 .. | size > 40 && size < 200 */
+ //case 0xa3: return ((IPP2P_EDK * 100) + 53);
+ // break;
+ case 0x9a: if (packet_len==26) return ((IPP2P_EDK * 100) + 54);
+ break;
+
+ case 0x92: if (packet_len==18) return ((IPP2P_EDK * 100) + 55);
+ break;
+ }
+ break;
+ }
+ case 0xe4:
+ {
+ switch (t[1])
+ {
+ /* e4 20 .. | size == 43 */
+ case 0x20: if ((packet_len == 43) && (t[2] != 0x00) && (t[34] != 0x00)) return ((IPP2P_EDK * 100) + 60);
+ break;
+ /* e4 00 .. 00 | size == 35 ? */
+ case 0x00: if ((packet_len == 35) && (t[26] == 0x00)) return ((IPP2P_EDK * 100) + 61);
+ break;
+ /* e4 10 .. 00 | size == 35 ? */
+ case 0x10: if ((packet_len == 35) && (t[26] == 0x00)) return ((IPP2P_EDK * 100) + 62);
+ break;
+ /* e4 18 .. 00 | size == 35 ? */
+ case 0x18: if ((packet_len == 35) && (t[26] == 0x00)) return ((IPP2P_EDK * 100) + 63);
+ break;
+ /* e4 52 .. | size = 44 */
+ case 0x52: if (packet_len == 44 ) return ((IPP2P_EDK * 100) + 64);
+ break;
+ /* e4 58 .. | size == 6 */
+ case 0x58: if (packet_len == 14 ) return ((IPP2P_EDK * 100) + 65);
+ break;
+ /* e4 59 .. | size == 2 */
+ case 0x59: if (packet_len == 10 )return ((IPP2P_EDK * 100) + 66);
+ break;
+ /* e4 28 .. | packet_len == 52,77,102,127... */
+ case 0x28: if (((packet_len-52) % 25) == 0) return ((IPP2P_EDK * 100) + 67);
+ break;
+ /* e4 50 xx xx | size == 4 */
+ case 0x50: if (packet_len == 12) return ((IPP2P_EDK * 100) + 68);
+ break;
+ /* e4 40 xx xx | size == 48 */
+ case 0x40: if (packet_len == 56) return ((IPP2P_EDK * 100) + 69);
+ break;
+ }
+ break;
+ }
+ } /* end of switch (t[0]) */
+ return 0;
+}/*udp_search_edk*/
+
+
+/*Search for UDP Gnutella commands*/
+int
+udp_search_gnu (unsigned char *haystack, int packet_len)
+{
+ unsigned char *t = haystack;
+ t += 8;
+
+ if (memcmp(t, "GND", 3) == 0) return ((IPP2P_GNU * 100) + 51);
+ if (memcmp(t, "GNUTELLA ", 9) == 0) return ((IPP2P_GNU * 100) + 52);
+ return 0;
+}/*udp_search_gnu*/
+
+
+/*Search for UDP KaZaA commands*/
+int
+udp_search_kazaa (unsigned char *haystack, int packet_len)
+{
+ unsigned char *t = haystack;
+
+ if (t[packet_len-1] == 0x00){
+ t += (packet_len - 6);
+ if (memcmp(t, "KaZaA", 5) == 0) return (IPP2P_KAZAA * 100 +50);
+ }
+
+ return 0;
+}/*udp_search_kazaa*/
+
+/*Search for UDP DirectConnect commands*/
+int
+udp_search_directconnect (unsigned char *haystack, int packet_len)
+{
+ unsigned char *t = haystack;
+ if ((*(t + 8) == 0x24) && (*(t + packet_len - 1) == 0x7c)) {
+ t+=8;
+ if (memcmp(t, "SR ", 3) == 0) return ((IPP2P_DC * 100) + 60);
+ if (memcmp(t, "Ping ", 5) == 0) return ((IPP2P_DC * 100) + 61);
+ }
+ return 0;
+}/*udp_search_directconnect*/
+
+
+
+/*Search for UDP BitTorrent commands*/
+int
+udp_search_bit (unsigned char *haystack, int packet_len)
+{
+ switch(packet_len)
+ {
+ case 24:
+ /* ^ 00 00 04 17 27 10 19 80 */
+ if ((ntohl(get_u32(haystack, 8)) == 0x00000417) && (ntohl(get_u32(haystack, 12)) == 0x27101980))
+ return (IPP2P_BIT * 100 + 50);
+ break;
+ case 44:
+ if (get_u32(haystack, 16) == __constant_htonl(0x00000400) && get_u32(haystack, 36) == __constant_htonl(0x00000104))
+ return (IPP2P_BIT * 100 + 51);
+ if (get_u32(haystack, 16) == __constant_htonl(0x00000400))
+ return (IPP2P_BIT * 100 + 61);
+ break;
+ case 65:
+ if (get_u32(haystack, 16) == __constant_htonl(0x00000404) && get_u32(haystack, 36) == __constant_htonl(0x00000104))
+ return (IPP2P_BIT * 100 + 52);
+ if (get_u32(haystack, 16) == __constant_htonl(0x00000404))
+ return (IPP2P_BIT * 100 + 62);
+ break;
+ case 67:
+ if (get_u32(haystack, 16) == __constant_htonl(0x00000406) && get_u32(haystack, 36) == __constant_htonl(0x00000104))
+ return (IPP2P_BIT * 100 + 53);
+ if (get_u32(haystack, 16) == __constant_htonl(0x00000406))
+ return (IPP2P_BIT * 100 + 63);
+ break;
+ case 211:
+ if (get_u32(haystack, 8) == __constant_htonl(0x00000405))
+ return (IPP2P_BIT * 100 + 54);
+ break;
+ case 29:
+ if ((get_u32(haystack, 8) == __constant_htonl(0x00000401)))
+ return (IPP2P_BIT * 100 + 55);
+ break;
+ case 52:
+ if (get_u32(haystack,8) == __constant_htonl(0x00000827) &&
+ get_u32(haystack,12) == __constant_htonl(0x37502950))
+ return (IPP2P_BIT * 100 + 80);
+ break;
+ default:
+ /* this packet does not have a constant size */
+ if (packet_len >= 40 && get_u32(haystack, 16) == __constant_htonl(0x00000402) && get_u32(haystack, 36) == __constant_htonl(0x00000104))
+ return (IPP2P_BIT * 100 + 56);
+ break;
+ }
+
+ /* some extra-bitcomet rules:
+ * "d1:" [a|r] "d2:id20:"
+ */
+ if (packet_len > 30 && get_u8(haystack, 8) == 'd' && get_u8(haystack, 9) == '1' && get_u8(haystack, 10) == ':' )
+ {
+ if (get_u8(haystack, 11) == 'a' || get_u8(haystack, 11) == 'r')
+ {
+ if (memcmp(haystack+12,"d2:id20:",8)==0)
+ return (IPP2P_BIT * 100 + 57);
+ }
+ }
+
+#if 0
+ /* bitlord rules */
+ /* packetlen must be bigger than 40 */
+ /* first 4 bytes are zero */
+ if (packet_len > 40 && get_u32(haystack, 8) == 0x00000000)
+ {
+ /* first rule: 00 00 00 00 01 00 00 xx xx xx xx 00 00 00 00*/
+ if (get_u32(haystack, 12) == 0x00000000 &&
+ get_u32(haystack, 16) == 0x00010000 &&
+ get_u32(haystack, 24) == 0x00000000 )
+ return (IPP2P_BIT * 100 + 71);
+
+ /* 00 01 00 00 0d 00 00 xx xx xx xx 00 00 00 00*/
+ if (get_u32(haystack, 12) == 0x00000001 &&
+ get_u32(haystack, 16) == 0x000d0000 &&
+ get_u32(haystack, 24) == 0x00000000 )
+ return (IPP2P_BIT * 100 + 71);
+
+
+ }
+#endif
+
+ return 0;
+}/*udp_search_bit*/
+
+
+
+/*Search for Ares commands*/
+//#define IPP2P_DEBUG_ARES
+int
+search_ares (const unsigned char *payload, const u16 plen)
+//int search_ares (unsigned char *haystack, int packet_len, int head_len)
+{
+// const unsigned char *t = haystack + head_len;
+
+ /* all ares packets start with */
+ if (payload[1] == 0 && (plen - payload[0]) == 3)
+ {
+ switch (payload[2])
+ {
+ case 0x5a:
+ /* ares connect */
+ if ( plen == 6 && payload[5] == 0x05 ) return ((IPP2P_ARES * 100) + 1);
+ break;
+ case 0x09:
+ /* ares search, min 3 chars --> 14 bytes
+ * lets define a search can be up to 30 chars --> max 34 bytes
+ */
+ if ( plen >= 14 && plen <= 34 ) return ((IPP2P_ARES * 100) + 1);
+ break;
+#ifdef IPP2P_DEBUG_ARES
+ default:
+ printk(KERN_DEBUG "Unknown Ares command %x recognized, len: %u \n", (unsigned int) payload[2],plen);
+#endif /* IPP2P_DEBUG_ARES */
+ }
+ }
+
+#if 0
+ /* found connect packet: 03 00 5a 04 03 05 */
+ /* new version ares 1.8: 03 00 5a xx xx 05 */
+ if ((plen) == 6){ /* possible connect command*/
+ if ((payload[0] == 0x03) && (payload[1] == 0x00) && (payload[2] == 0x5a) && (payload[5] == 0x05))
+ return ((IPP2P_ARES * 100) + 1);
+ }
+ if ((plen) == 60){ /* possible download command*/
+ if ((payload[59] == 0x0a) && (payload[58] == 0x0a)){
+ if (memcmp(t, "PUSH SHA1:", 10) == 0) /* found download command */
+ return ((IPP2P_ARES * 100) + 2);
+ }
+ }
+#endif
+
+ return 0;
+} /*search_ares*/
+
+/*Search for SoulSeek commands*/
+int
+search_soul (const unsigned char *payload, const u16 plen)
+{
+//#define IPP2P_DEBUG_SOUL
+ /* match: xx xx xx xx | xx = sizeof(payload) - 4 */
+ if (get_u32(payload, 0) == (plen - 4)){
+ const __u32 m=get_u32(payload, 4);
+ /* match 00 yy yy 00, yy can be everything */
+ if ( get_u8(payload, 4) == 0x00 && get_u8(payload, 7) == 0x00 )
+ {
+#ifdef IPP2P_DEBUG_SOUL
+ printk(KERN_DEBUG "0: Soulseek command 0x%x recognized\n",get_u32(payload, 4));
+#endif /* IPP2P_DEBUG_SOUL */
+ return ((IPP2P_SOUL * 100) + 1);
+ }
+
+ /* next match: 01 yy 00 00 | yy can be everything */
+ if ( get_u8(payload, 4) == 0x01 && get_u16(payload, 6) == 0x0000 )
+ {
+#ifdef IPP2P_DEBUG_SOUL
+ printk(KERN_DEBUG "1: Soulseek command 0x%x recognized\n",get_u16(payload, 4));
+#endif /* IPP2P_DEBUG_SOUL */
+ return ((IPP2P_SOUL * 100) + 2);
+ }
+
+ /* other soulseek commandos are: 1-5,7,9,13-18,22,23,26,28,35-37,40-46,50,51,60,62-69,91,92,1001 */
+ /* try to do this in an intelligent way */
+ /* get all small commandos */
+ switch(m)
+ {
+ case 7:
+ case 9:
+ case 22:
+ case 23:
+ case 26:
+ case 28:
+ case 50:
+ case 51:
+ case 60:
+ case 91:
+ case 92:
+ case 1001:
+#ifdef IPP2P_DEBUG_SOUL
+ printk(KERN_DEBUG "2: Soulseek command 0x%x recognized\n",get_u16(payload, 4));
+#endif /* IPP2P_DEBUG_SOUL */
+ return ((IPP2P_SOUL * 100) + 3);
+ }
+
+ if (m > 0 && m < 6 )
+ {
+#ifdef IPP2P_DEBUG_SOUL
+ printk(KERN_DEBUG "3: Soulseek command 0x%x recognized\n",get_u16(payload, 4));
+#endif /* IPP2P_DEBUG_SOUL */
+ return ((IPP2P_SOUL * 100) + 4);
+ }
+ if (m > 12 && m < 19 )
+ {
+#ifdef IPP2P_DEBUG_SOUL
+ printk(KERN_DEBUG "4: Soulseek command 0x%x recognized\n",get_u16(payload, 4));
+#endif /* IPP2P_DEBUG_SOUL */
+ return ((IPP2P_SOUL * 100) + 5);
+ }
+
+ if (m > 34 && m < 38 )
+ {
+#ifdef IPP2P_DEBUG_SOUL
+ printk(KERN_DEBUG "5: Soulseek command 0x%x recognized\n",get_u16(payload, 4));
+#endif /* IPP2P_DEBUG_SOUL */
+ return ((IPP2P_SOUL * 100) + 6);
+ }
+
+ if (m > 39 && m < 47 )
+ {
+#ifdef IPP2P_DEBUG_SOUL
+ printk(KERN_DEBUG "6: Soulseek command 0x%x recognized\n",get_u16(payload, 4));
+#endif /* IPP2P_DEBUG_SOUL */
+ return ((IPP2P_SOUL * 100) + 7);
+ }
+
+ if (m > 61 && m < 70 )
+ {
+#ifdef IPP2P_DEBUG_SOUL
+ printk(KERN_DEBUG "7: Soulseek command 0x%x recognized\n",get_u16(payload, 4));
+#endif /* IPP2P_DEBUG_SOUL */
+ return ((IPP2P_SOUL * 100) + 8);
+ }
+
+#ifdef IPP2P_DEBUG_SOUL
+ printk(KERN_DEBUG "unknown SOULSEEK command: 0x%x, first 16 bit: 0x%x, first 8 bit: 0x%x ,soulseek ???\n",get_u32(payload, 4),get_u16(payload, 4) >> 16,get_u8(payload, 4) >> 24);
+#endif /* IPP2P_DEBUG_SOUL */
+ }
+
+ /* match 14 00 00 00 01 yy 00 00 00 STRING(YY) 01 00 00 00 00 46|50 00 00 00 00 */
+ /* without size at the beginning !!! */
+ if ( get_u32(payload, 0) == 0x14 && get_u8(payload, 4) == 0x01 )
+ {
+ __u32 y=get_u32(payload, 5);
+ /* we need 19 chars + string */
+ if ( (y + 19) <= (plen) )
+ {
+ const unsigned char *w=payload+9+y;
+ if (get_u32(w, 0) == 0x01 && ( get_u16(w, 4) == 0x4600 || get_u16(w, 4) == 0x5000) && get_u32(w, 6) == 0x00);
+#ifdef IPP2P_DEBUG_SOUL
+ printk(KERN_DEBUG "Soulssek special client command recognized\n");
+#endif /* IPP2P_DEBUG_SOUL */
+ return ((IPP2P_SOUL * 100) + 9);
+ }
+ }
+ return 0;
+}
+
+
+/*Search for WinMX commands*/
+int
+search_winmx (const unsigned char *payload, const u16 plen)
+{
+//#define IPP2P_DEBUG_WINMX
+ if (((plen) == 4) && (memcmp(payload, "SEND", 4) == 0)) return ((IPP2P_WINMX * 100) + 1);
+ if (((plen) == 3) && (memcmp(payload, "GET", 3) == 0)) return ((IPP2P_WINMX * 100) + 2);
+ //if (packet_len < (head_len + 10)) return 0;
+ if (plen < 10) return 0;
+
+ if ((memcmp(payload, "SEND", 4) == 0) || (memcmp(payload, "GET", 3) == 0)){
+ u16 c=4;
+ const u16 end=plen-2;
+ u8 count=0;
+ while (c < end)
+ {
+ if (payload[c]== 0x20 && payload[c+1] == 0x22)
+ {
+ c++;
+ count++;
+ if (count>=2) return ((IPP2P_WINMX * 100) + 3);
+ }
+ c++;
+ }
+ }
+
+ if ( plen == 149 && payload[0] == '8' )
+ {
+#ifdef IPP2P_DEBUG_WINMX
+ printk(KERN_INFO "maybe WinMX\n");
+#endif
+ if (get_u32(payload,17) == 0 && get_u32(payload,21) == 0 && get_u32(payload,25) == 0 &&
+// get_u32(payload,33) == __constant_htonl(0x71182b1a) && get_u32(payload,37) == __constant_htonl(0x05050000) &&
+// get_u32(payload,133) == __constant_htonl(0x31097edf) && get_u32(payload,145) == __constant_htonl(0xdcb8f792))
+ get_u16(payload,39) == 0 && get_u16(payload,135) == __constant_htons(0x7edf) && get_u16(payload,147) == __constant_htons(0xf792))
+
+ {
+#ifdef IPP2P_DEBUG_WINMX
+ printk(KERN_INFO "got WinMX\n");
+#endif
+ return ((IPP2P_WINMX * 100) + 4);
+ }
+ }
+ return 0;
+} /*search_winmx*/
+
+
+/*Search for appleJuice commands*/
+int
+search_apple (const unsigned char *payload, const u16 plen)
+{
+ if ( (plen > 7) && (payload[6] == 0x0d) && (payload[7] == 0x0a) && (memcmp(payload, "ajprot", 6) == 0)) return (IPP2P_APPLE * 100);
+
+ return 0;
+}
+
+
+/*Search for BitTorrent commands*/
+int
+search_bittorrent (const unsigned char *payload, const u16 plen)
+{
+ if (plen > 20)
+ {
+ /* test for match 0x13+"BitTorrent protocol" */
+ if (payload[0] == 0x13)
+ {
+ if (memcmp(payload+1, "BitTorrent protocol", 19) == 0) return (IPP2P_BIT * 100);
+ }
+
+ /* get tracker commandos, all starts with GET /
+ * then it can follow: scrape| announce
+ * and then ?hash_info=
+ */
+ if (memcmp(payload,"GET /",5) == 0)
+ {
+ /* message scrape */
+ if ( memcmp(payload+5,"scrape?info_hash=",17)==0 ) return (IPP2P_BIT * 100 + 1);
+ /* message announce */
+ if ( memcmp(payload+5,"announce?info_hash=",19)==0 ) return (IPP2P_BIT * 100 + 2);
+ }
+ }
+ else
+ {
+ /* bitcomet encryptes the first packet, so we have to detect another
+ * one later in the flow */
+ /* first try failed, too many missdetections */
+ //if ( size == 5 && get_u32(t,0) == __constant_htonl(1) && t[4] < 3) return (IPP2P_BIT * 100 + 3);
+
+ /* second try: block request packets */
+ if ( plen == 17 && get_u32(payload,0) == __constant_htonl(0x0d) && payload[4] == 0x06 && get_u32(payload,13) == __constant_htonl(0x4000) ) return (IPP2P_BIT * 100 + 3);
+ }
+
+ return 0;
+}
+
+
+
+/*check for Kazaa get command*/
+int
+search_kazaa (const unsigned char *payload, const u16 plen)
+
+{
+ if ((payload[plen-2] == 0x0d) && (payload[plen-1] == 0x0a) && memcmp(payload, "GET /.hash=", 11) == 0)
+ return (IPP2P_DATA_KAZAA * 100);
+
+ return 0;
+}
+
+
+/*check for gnutella get command*/
+int
+search_gnu (const unsigned char *payload, const u16 plen)
+{
+ if ((payload[plen-2] == 0x0d) && (payload[plen-1] == 0x0a))
+ {
+ if (memcmp(payload, "GET /get/", 9) == 0) return ((IPP2P_DATA_GNU * 100) + 1);
+ if (memcmp(payload, "GET /uri-res/", 13) == 0) return ((IPP2P_DATA_GNU * 100) + 2);
+ }
+ return 0;
+}
+
+
+/*check for gnutella get commands and other typical data*/
+int
+search_all_gnu (const unsigned char *payload, const u16 plen)
+{
+
+ if ((payload[plen-2] == 0x0d) && (payload[plen-1] == 0x0a))
+ {
+
+ if (memcmp(payload, "GNUTELLA CONNECT/", 17) == 0) return ((IPP2P_GNU * 100) + 1);
+ if (memcmp(payload, "GNUTELLA/", 9) == 0) return ((IPP2P_GNU * 100) + 2);
+
+
+ if ((memcmp(payload, "GET /get/", 9) == 0) || (memcmp(payload, "GET /uri-res/", 13) == 0))
+ {
+ u16 c=8;
+ const u16 end=plen-22;
+ while (c < end) {
+ if ( payload[c] == 0x0a && payload[c+1] == 0x0d && ((memcmp(&payload[c+2], "X-Gnutella-", 11) == 0) || (memcmp(&payload[c+2], "X-Queue:", 8) == 0)))
+ return ((IPP2P_GNU * 100) + 3);
+ c++;
+ }
+ }
+ }
+ return 0;
+}
+
+
+/*check for KaZaA download commands and other typical data*/
+int
+search_all_kazaa (const unsigned char *payload, const u16 plen)
+{
+ if ((payload[plen-2] == 0x0d) && (payload[plen-1] == 0x0a))
+ {
+
+ if (memcmp(payload, "GIVE ", 5) == 0) return ((IPP2P_KAZAA * 100) + 1);
+
+ if (memcmp(payload, "GET /", 5) == 0) {
+ u16 c = 8;
+ const u16 end=plen-22;
+ while (c < end) {
+ if ( payload[c] == 0x0a && payload[c+1] == 0x0d && ((memcmp(&payload[c+2], "X-Kazaa-Username: ", 18) == 0) || (memcmp(&payload[c+2], "User-Agent: PeerEnabler/", 24) == 0)))
+ return ((IPP2P_KAZAA * 100) + 2);
+ c++;
+ }
+ }
+ }
+ return 0;
+}
+
+/*fast check for edonkey file segment transfer command*/
+int
+search_edk (const unsigned char *payload, const u16 plen)
+{
+ if (payload[0] != 0xe3)
+ return 0;
+ else {
+ if (payload[5] == 0x47)
+ return (IPP2P_DATA_EDK * 100);
+ else
+ return 0;
+ }
+}
+
+
+
+/*intensive but slower search for some edonkey packets including size-check*/
+int
+search_all_edk (const unsigned char *payload, const u16 plen)
+{
+ if (payload[0] != 0xe3)
+ return 0;
+ else {
+ //t += head_len;
+ const u16 cmd = get_u16(payload, 1);
+ if (cmd == (plen - 5)) {
+ switch (payload[5]) {
+ case 0x01: return ((IPP2P_EDK * 100) + 1); /*Client: hello or Server:hello*/
+ case 0x4c: return ((IPP2P_EDK * 100) + 9); /*Client: Hello-Answer*/
+ }
+ }
+ return 0;
+ }
+}
+
+
+/*fast check for Direct Connect send command*/
+int
+search_dc (const unsigned char *payload, const u16 plen)
+{
+
+ if (payload[0] != 0x24 )
+ return 0;
+ else {
+ if (memcmp(&payload[1], "Send|", 5) == 0)
+ return (IPP2P_DATA_DC * 100);
+ else
+ return 0;
+ }
+
+}
+
+
+/*intensive but slower check for all direct connect packets*/
+int
+search_all_dc (const unsigned char *payload, const u16 plen)
+{
+// unsigned char *t = haystack;
+
+ if (payload[0] == 0x24 && payload[plen-1] == 0x7c)
+ {
+ const unsigned char *t=&payload[1];
+ /* Client-Hub-Protocol */
+ if (memcmp(t, "Lock ", 5) == 0) return ((IPP2P_DC * 100) + 1);
+ /* Client-Client-Protocol, some are already recognized by client-hub (like lock) */
+ if (memcmp(t, "MyNick ", 7) == 0) return ((IPP2P_DC * 100) + 38);
+ }
+ return 0;
+}
+
+/*check for mute*/
+int
+search_mute (const unsigned char *payload, const u16 plen)
+{
+ if ( plen == 209 || plen == 345 || plen == 473 || plen == 609 || plen == 1121 )
+ {
+ //printk(KERN_DEBUG "size hit: %u",size);
+ if (memcmp(payload,"PublicKey: ",11) == 0 )
+ {
+ return ((IPP2P_MUTE * 100) + 0);
+
+/* if (memcmp(t+size-14,"\x0aEndPublicKey\x0a",14) == 0)
+ {
+ printk(KERN_DEBUG "end pubic key hit: %u",size);
+
+ }*/
+ }
+ }
+ return 0;
+}
+
+
+/* check for xdcc */
+int
+search_xdcc (const unsigned char *payload, const u16 plen)
+{
+ /* search in small packets only */
+ if (plen > 20 && plen < 200 && payload[plen-1] == 0x0a && payload[plen-2] == 0x0d && memcmp(payload,"PRIVMSG ",8) == 0)
+ {
+
+ u16 x=10;
+ const u16 end=plen - 13;
+
+ /* is seems to be a irc private massage, chedck for xdcc command */
+ while (x < end)
+ {
+ if (payload[x] == ':')
+ {
+ if ( memcmp(&payload[x+1],"xdcc send #",11) == 0 )
+ return ((IPP2P_XDCC * 100) + 0);
+ }
+ x++;
+ }
+ }
+ return 0;
+}
+
+/* search for waste */
+int search_waste(const unsigned char *payload, const u16 plen)
+{
+ if ( plen >= 8 && memcmp(payload,"GET.sha1:",9) == 0)
+ return ((IPP2P_WASTE * 100) + 0);
+
+ return 0;
+}
+
+
+static struct {
+ int command;
+ __u8 short_hand; /*for fucntions included in short hands*/
+ int packet_len;
+ int (*function_name) (const unsigned char *, const u16);
+} matchlist[] = {
+ {IPP2P_EDK,SHORT_HAND_IPP2P,20, &search_all_edk},
+// {IPP2P_DATA_KAZAA,SHORT_HAND_DATA,200, &search_kazaa},
+// {IPP2P_DATA_EDK,SHORT_HAND_DATA,60, &search_edk},
+// {IPP2P_DATA_DC,SHORT_HAND_DATA,26, &search_dc},
+ {IPP2P_DC,SHORT_HAND_IPP2P,5, search_all_dc},
+// {IPP2P_DATA_GNU,SHORT_HAND_DATA,40, &search_gnu},
+ {IPP2P_GNU,SHORT_HAND_IPP2P,5, &search_all_gnu},
+ {IPP2P_KAZAA,SHORT_HAND_IPP2P,5, &search_all_kazaa},
+ {IPP2P_BIT,SHORT_HAND_IPP2P,20, &search_bittorrent},
+ {IPP2P_APPLE,SHORT_HAND_IPP2P,5, &search_apple},
+ {IPP2P_SOUL,SHORT_HAND_IPP2P,5, &search_soul},
+ {IPP2P_WINMX,SHORT_HAND_IPP2P,2, &search_winmx},
+ {IPP2P_ARES,SHORT_HAND_IPP2P,5, &search_ares},
+ {IPP2P_MUTE,SHORT_HAND_NONE,200, &search_mute},
+ {IPP2P_WASTE,SHORT_HAND_NONE,5, &search_waste},
+ {IPP2P_XDCC,SHORT_HAND_NONE,5, &search_xdcc},
+ {0,0,0,NULL}
+};
+
+
+static struct {
+ int command;
+ __u8 short_hand; /*for fucntions included in short hands*/
+ int packet_len;
+ int (*function_name) (unsigned char *, int);
+} udp_list[] = {
+ { IPP2P_KAZAA, SHORT_HAND_IPP2P, 14, &udp_search_kazaa},
+ { IPP2P_BIT, SHORT_HAND_IPP2P, 23, &udp_search_bit},
+ { IPP2P_GNU, SHORT_HAND_IPP2P, 11, &udp_search_gnu},
+ { IPP2P_EDK, SHORT_HAND_IPP2P, 9, &udp_search_edk},
+ { IPP2P_DC, SHORT_HAND_IPP2P, 12, &udp_search_directconnect},
+ { 0, 0, 0, NULL }
+};
+
+#if LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,23)
+static bool
+#else
+static int
+#endif
+match(const struct sk_buff *skb,
+ const struct net_device *in,
+ const struct net_device *out,
+#if LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,17)
+ const struct xt_match *match,
+#endif
+ const void *matchinfo,
+ int offset,
+#if LINUX_VERSION_CODE < KERNEL_VERSION(2,6,0)
+ const void *hdr,
+ u_int16_t datalen,
+#endif
+#if LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,16)
+ unsigned int protoff,
+#endif
+#if LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,23)
+ bool *hotdrop)
+#else
+ bool *hotdrop)
+#endif
+{
+ const struct ipt_p2p_info *info = matchinfo;
+ unsigned char *haystack;
+#if LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,22)
+ struct iphdr *ip = ip_hdr(skb);
+#else
+ struct iphdr *ip = skb->nh.iph;
+#endif
+ int p2p_result = 0, i = 0;
+// int head_len;
+ int hlen = ntohs(ip->tot_len)-(ip->ihl*4); /*hlen = packet-data length*/
+
+ /*must not be a fragment*/
+ if (offset) {
+ if (info->debug) printk("IPP2P.match: offset found %i \n",offset);
+ return 0;
+ }
+
+ /*make sure that skb is linear*/
+ if(skb_is_nonlinear(skb)){
+ if (info->debug) printk("IPP2P.match: nonlinear skb found\n");
+ return 0;
+ }
+
+
+ haystack=(char *)ip+(ip->ihl*4); /*haystack = packet data*/
+
+ switch (ip->protocol){
+ case IPPROTO_TCP: /*what to do with a TCP packet*/
+ {
+ struct tcphdr *tcph = (void *) ip + ip->ihl * 4;
+
+ if (tcph->fin) return 0; /*if FIN bit is set bail out*/
+ if (tcph->syn) return 0; /*if SYN bit is set bail out*/
+ if (tcph->rst) return 0; /*if RST bit is set bail out*/
+
+ haystack += tcph->doff * 4; /*get TCP-Header-Size*/
+ hlen -= tcph->doff * 4;
+ while (matchlist[i].command) {
+ if ((((info->cmd & matchlist[i].command) == matchlist[i].command) ||
+ ((info->cmd & matchlist[i].short_hand) == matchlist[i].short_hand)) &&
+ (hlen > matchlist[i].packet_len)) {
+ p2p_result = matchlist[i].function_name(haystack, hlen);
+ if (p2p_result)
+ {
+ if (info->debug) printk("IPP2P.debug:TCP-match: %i from: %u.%u.%u.%u:%i to: %u.%u.%u.%u:%i Length: %i\n",
+ p2p_result, NIPQUAD(ip->saddr),ntohs(tcph->source), NIPQUAD(ip->daddr),ntohs(tcph->dest),hlen);
+ return p2p_result;
+ }
+ }
+ i++;
+ }
+ return p2p_result;
+ }
+
+ case IPPROTO_UDP: /*what to do with an UDP packet*/
+ {
+ struct udphdr *udph = (void *) ip + ip->ihl * 4;
+
+ while (udp_list[i].command){
+ if ((((info->cmd & udp_list[i].command) == udp_list[i].command) ||
+ ((info->cmd & udp_list[i].short_hand) == udp_list[i].short_hand)) &&
+ (hlen > udp_list[i].packet_len)) {
+ p2p_result = udp_list[i].function_name(haystack, hlen);
+ if (p2p_result){
+ if (info->debug) printk("IPP2P.debug:UDP-match: %i from: %u.%u.%u.%u:%i to: %u.%u.%u.%u:%i Length: %i\n",
+ p2p_result, NIPQUAD(ip->saddr),ntohs(udph->source), NIPQUAD(ip->daddr),ntohs(udph->dest),hlen);
+ return p2p_result;
+ }
+ }
+ i++;
+ }
+ return p2p_result;
+ }
+
+ default: return 0;
+ }
+}
+
+#if LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,23)
+static bool
+#else
+static int
+#endif
+checkentry(const char *tablename,
+#if LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,16)
+ const void *ip,
+#else
+ const struct ipt_ip *ip,
+#endif
+#if LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,17)
+ const struct xt_match *match,
+#endif
+ void *matchinfo,
+#if LINUX_VERSION_CODE < KERNEL_VERSION(2,6,19)
+ unsigned int matchsize,
+#endif
+ unsigned int hook_mask)
+{
+ /* Must specify -p tcp */
+/* if (ip->proto != IPPROTO_TCP || (ip->invflags & IPT_INV_PROTO)) {
+ * printk("ipp2p: Only works on TCP packets, use -p tcp\n");
+ * return 0;
+ * }*/
+ return 1;
+}
+
+
+
+#if LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,21)
+static struct xt_match ipp2p_match = {
+#else
+static struct ipt_match ipp2p_match = {
+#endif
+#if LINUX_VERSION_CODE < KERNEL_VERSION(2,6,0)
+ { NULL, NULL },
+ "ipp2p",
+ &ipp2p_match,
+ &ipp2p_checkentry,
+ NULL,
+ THIS_MODULE
+#endif
+#if LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,0)
+ .name = "ipp2p",
+#if LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,21)
+ .family = AF_INET,
+#endif
+ .match = &match,
+#if LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,17)
+ .matchsize = sizeof(struct ipt_p2p_info),
+#endif
+ .checkentry = &checkentry,
+ .me = THIS_MODULE,
+#endif
+};
+
+
+static int __init init(void)
+{
+ printk(KERN_INFO "IPP2P v%s loading\n", IPP2P_VERSION);
+#if LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,21)
+ return xt_register_match(&ipp2p_match);
+#else
+ return ipt_register_match(&ipp2p_match);
+#endif
+}
+
+static void __exit fini(void)
+{
+#if LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,21)
+ xt_unregister_match(&ipp2p_match);
+#else
+ ipt_unregister_match(&ipp2p_match);
+#endif
+ printk(KERN_INFO "IPP2P v%s unloaded\n", IPP2P_VERSION);
+}
+
+module_init(init);
+module_exit(fini);
+
+
diff -Naur linux-2.6.27.19.org/net/ipv4/netfilter/Kconfig linux-2.6.27.19/net/ipv4/netfilter/Kconfig
--- linux-2.6.27.19.org/net/ipv4/netfilter/Kconfig 2009-02-20 23:39:34.000000000 +0100
+++ linux-2.6.27.19/net/ipv4/netfilter/Kconfig 2009-03-17 19:31:50.000000000 +0100
@@ -406,5 +406,15 @@
Allows altering the ARP packet payload: source and destination
hardware and network addresses.
+config IP_NF_MATCH_IPP2P
+ tristate 'IPP2P match support'
+ depends on IP_NF_IPTABLES
+ help
+ This option makes possible to match some P2P packets
+ therefore helps controlling such traffic.
+
+ If you want to compile it as a module, say M here and read
+ <file:Documentation/modules.txt>. If unsure, say `N'.
+
endmenu
diff -Naur linux-2.6.27.19.org/net/ipv4/netfilter/Makefile linux-2.6.27.19/net/ipv4/netfilter/Makefile
--- linux-2.6.27.19.org/net/ipv4/netfilter/Makefile 2009-02-20 23:39:34.000000000 +0100
+++ linux-2.6.27.19/net/ipv4/netfilter/Makefile 2009-03-17 19:31:50.000000000 +0100
@@ -49,6 +49,7 @@
obj-$(CONFIG_IP_NF_MATCH_AH) += ipt_ah.o
obj-$(CONFIG_IP_NF_MATCH_ECN) += ipt_ecn.o
obj-$(CONFIG_IP_NF_MATCH_RECENT) += ipt_recent.o
+obj-$(CONFIG_IP_NF_MATCH_IPP2P) += ipt_ipp2p.o
obj-$(CONFIG_IP_NF_MATCH_TTL) += ipt_ttl.o
# targets

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@@ -1,26 +0,0 @@
diff -Naur linux-2.6.27.25.org/drivers/usb/serial/option.c linux-2.6.27.25/drivers/usb/serial/option.c
--- linux-2.6.27.25.org/drivers/usb/serial/option.c 2009-06-12 05:04:50.000000000 +0200
+++ linux-2.6.27.25/drivers/usb/serial/option.c 2009-07-30 10:19:36.000000000 +0200
@@ -286,6 +286,12 @@
#define ZTE_PRODUCT_MF622 0x0001
#define ZTE_PRODUCT_MF628 0x0015
#define ZTE_PRODUCT_MF626 0x0031
+
+/* Vodafone K3565-Z - pid depends on firmware version */
+#define ZTE_PRODUCT_VFK3565_1 0x0049
+#define ZTE_PRODUCT_VFK3565_2 0x0052
+#define ZTE_PRODUCT_VFK3565_3 0x0063
+
#define ZTE_PRODUCT_CDMA_TECH 0xfffe
#define BENQ_VENDOR_ID 0x04a5
@@ -500,6 +506,9 @@
{ USB_DEVICE(ZTE_VENDOR_ID, ZTE_PRODUCT_MF622) },
{ USB_DEVICE(ZTE_VENDOR_ID, ZTE_PRODUCT_MF626) },
{ USB_DEVICE(ZTE_VENDOR_ID, ZTE_PRODUCT_MF628) },
+ { USB_DEVICE(ZTE_VENDOR_ID, ZTE_PRODUCT_VFK3565_1) },
+ { USB_DEVICE(ZTE_VENDOR_ID, ZTE_PRODUCT_VFK3565_2) },
+ { USB_DEVICE(ZTE_VENDOR_ID, ZTE_PRODUCT_VFK3565_3) },
{ USB_DEVICE(ZTE_VENDOR_ID, ZTE_PRODUCT_CDMA_TECH) },
{ USB_DEVICE(BENQ_VENDOR_ID, BENQ_PRODUCT_H10) },
{ USB_DEVICE(0x1da5, 0x4515) }, /* BenQ H20 */

View File

@@ -1,73 +0,0 @@
From: Rafael J. Wysocki <rjw@sisk.pl>
Date: Wed, 29 Oct 2008 21:22:18 +0000 (-0700)
Subject: e100: adapt to the reworked PCI PM
X-Git-Tag: v2.6.29-rc1~581^2~935
X-Git-Url: http://git.kernel.org/?p=linux%2Fkernel%2Fgit%2Ftorvalds%2Flinux-2.6.git;a=commitdiff_plain;h=bc79fc8409b3dccbde072e8113cc1fb3fd876fc5
e100: adapt to the reworked PCI PM
Adapt the e100 driver to the reworked PCI PM
* Use the observation that it is sufficient to call pci_enable_wake()
once, unless it fails
Signed-off-by: Rafael J. Wysocki <rjw@sisk.pl>
Tested-by: Jeff Kirsher <jeffrey.t.kirsher@intel.com>
Acked-by: Jeff Kirsher <jeffrey.t.kirsher@intel.com>
Cc: Jesse Barnes <jbarnes@virtuousgeek.org>
Cc: Jeff Garzik <jeff@garzik.org>
Cc: Frans Pop <elendil@planet.nl>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Jeff Garzik <jgarzik@redhat.com>
---
diff --git a/drivers/net/e100.c b/drivers/net/e100.c
index bb4b6e2..084127f 100644
--- a/drivers/net/e100.c
+++ b/drivers/net/e100.c
@@ -2322,7 +2322,8 @@ static int e100_set_wol(struct net_device *netdev, struct ethtool_wolinfo *wol)
{
struct nic *nic = netdev_priv(netdev);
- if(wol->wolopts != WAKE_MAGIC && wol->wolopts != 0)
+ if ((wol->wolopts && wol->wolopts != WAKE_MAGIC) ||
+ !device_can_wakeup(&nic->pdev->dev))
return -EOPNOTSUPP;
if(wol->wolopts)
@@ -2330,6 +2331,8 @@ static int e100_set_wol(struct net_device *netdev, struct ethtool_wolinfo *wol)
else
nic->flags &= ~wol_magic;
+ device_set_wakeup_enable(&nic->pdev->dev, wol->wolopts);
+
e100_exec_cb(nic, NULL, e100_configure);
return 0;
@@ -2733,8 +2736,10 @@ static int __devinit e100_probe(struct pci_dev *pdev,
/* Wol magic packet can be enabled from eeprom */
if((nic->mac >= mac_82558_D101_A4) &&
- (nic->eeprom[eeprom_id] & eeprom_id_wol))
+ (nic->eeprom[eeprom_id] & eeprom_id_wol)) {
nic->flags |= wol_magic;
+ device_set_wakeup_enable(&pdev->dev, true);
+ }
/* ack any pending wake events, disable PME */
pci_pme_active(pdev, false);
@@ -2793,11 +2798,10 @@ static int e100_suspend(struct pci_dev *pdev, pm_message_t state)
pci_save_state(pdev);
if ((nic->flags & wol_magic) | e100_asf(nic)) {
- pci_enable_wake(pdev, PCI_D3hot, 1);
- pci_enable_wake(pdev, PCI_D3cold, 1);
+ if (pci_enable_wake(pdev, PCI_D3cold, true))
+ pci_enable_wake(pdev, PCI_D3hot, true);
} else {
- pci_enable_wake(pdev, PCI_D3hot, 0);
- pci_enable_wake(pdev, PCI_D3cold, 0);
+ pci_enable_wake(pdev, PCI_D3hot, false);
}
pci_disable_device(pdev);

View File

@@ -1,75 +0,0 @@
diff --git a/drivers/net/wireless/ath/ath5k/ath5k.h b/drivers/net/wireless/ath/ath5k/ath5k.h
index 66bcb50..ad4d446 100644
--- a/drivers/net/wireless/ath/ath5k/ath5k.h
+++ b/drivers/net/wireless/ath/ath5k/ath5k.h
@@ -535,7 +535,7 @@ struct ath5k_txq_info {
u32 tqi_cbr_period; /* Constant bit rate period */
u32 tqi_cbr_overflow_limit;
u32 tqi_burst_time;
- u32 tqi_ready_time; /* Not used */
+ u32 tqi_ready_time; /* Time queue waits after an event */
};
/*
diff --git a/drivers/net/wireless/ath/ath5k/base.c b/drivers/net/wireless/ath/ath5k/base.c
index b501537..535a6af 100644
--- a/drivers/net/wireless/ath/ath5k/base.c
+++ b/drivers/net/wireless/ath/ath5k/base.c
@@ -1516,7 +1516,8 @@ ath5k_beaconq_config(struct ath5k_softc *sc)
ret = ath5k_hw_get_tx_queueprops(ah, sc->bhalq, &qi);
if (ret)
- return ret;
+ goto err;
+
if (sc->opmode == NL80211_IFTYPE_AP ||
sc->opmode == NL80211_IFTYPE_MESH_POINT) {
/*
@@ -1543,10 +1544,25 @@ ath5k_beaconq_config(struct ath5k_softc *sc)
if (ret) {
ATH5K_ERR(sc, "%s: unable to update parameters for beacon "
"hardware queue!\n", __func__);
- return ret;
+ goto err;
}
+ ret = ath5k_hw_reset_tx_queue(ah, sc->bhalq); /* push to h/w */
+ if (ret)
+ goto err;
- return ath5k_hw_reset_tx_queue(ah, sc->bhalq); /* push to h/w */;
+ /* reconfigure cabq with ready time to 80% of beacon_interval */
+ ret = ath5k_hw_get_tx_queueprops(ah, AR5K_TX_QUEUE_ID_CAB, &qi);
+ if (ret)
+ goto err;
+
+ qi.tqi_ready_time = (sc->bintval * 80) / 100;
+ ret = ath5k_hw_set_tx_queueprops(ah, AR5K_TX_QUEUE_ID_CAB, &qi);
+ if (ret)
+ goto err;
+
+ ret = ath5k_hw_reset_tx_queue(ah, AR5K_TX_QUEUE_ID_CAB);
+err:
+ return ret;
}
static void
diff --git a/drivers/net/wireless/ath/ath5k/qcu.c b/drivers/net/wireless/ath/ath5k/qcu.c
index abe36c0..9122a85 100644
--- a/drivers/net/wireless/ath/ath5k/qcu.c
+++ b/drivers/net/wireless/ath/ath5k/qcu.c
@@ -408,12 +408,13 @@ int ath5k_hw_reset_tx_queue(struct ath5k_hw *ah, unsigned int queue)
break;
case AR5K_TX_QUEUE_CAB:
+ /* XXX: use BCN_SENT_GT, if we can figure out how */
AR5K_REG_ENABLE_BITS(ah, AR5K_QUEUE_MISC(queue),
- AR5K_QCU_MISC_FRSHED_BCN_SENT_GT |
+ AR5K_QCU_MISC_FRSHED_DBA_GT |
AR5K_QCU_MISC_CBREXP_DIS |
AR5K_QCU_MISC_CBREXP_BCN_DIS);
- ath5k_hw_reg_write(ah, ((AR5K_TUNE_BEACON_INTERVAL -
+ ath5k_hw_reg_write(ah, ((tq->tqi_ready_time -
(AR5K_TUNE_SW_BEACON_RESP -
AR5K_TUNE_DMA_BEACON_RESP) -
AR5K_TUNE_ADDITIONAL_SWBA_BACKOFF) * 1024) |

View File

@@ -1,141 +0,0 @@
diff -urN openssh-4.7p1.orig/ssh-add.c openssh-4.7p1/ssh-add.c
--- openssh-4.7p1.orig/ssh-add.c 2007-09-06 15:16:42.472974134 +0200
+++ openssh-4.7p1/ssh-add.c 2007-09-06 15:21:26.489159294 +0200
@@ -42,6 +42,7 @@
#include <sys/param.h>
#include <openssl/evp.h>
+#include <openssl/engine.h>
#include <fcntl.h>
#include <pwd.h>
@@ -343,7 +344,11 @@
SSLeay_add_all_algorithms();
- /* At first, get a connection to the authentication agent. */
+ /* Init available hardware crypto engines. */
+ ENGINE_load_builtin_engines();
+ ENGINE_register_all_complete();
+ ENGINE_set_default_ciphers(ENGINE_by_id("padlock"));
+
ac = ssh_get_authentication_connection();
if (ac == NULL) {
fprintf(stderr,
diff -urN openssh-4.7p1.orig/ssh-agent.c openssh-4.7p1/ssh-agent.c
--- openssh-4.7p1.orig/ssh-agent.c 2007-09-06 15:16:42.472974134 +0200
+++ openssh-4.7p1/ssh-agent.c 2007-09-06 15:23:21.495713144 +0200
@@ -51,6 +51,7 @@
#include <openssl/evp.h>
#include <openssl/md5.h>
+#include <openssl/engine.h>
#include <errno.h>
#include <fcntl.h>
@@ -1061,6 +1062,11 @@
SSLeay_add_all_algorithms();
+ /* Init available hardware crypto engines. */
+ ENGINE_load_builtin_engines();
+ ENGINE_register_all_complete();
+ ENGINE_set_default_ciphers(ENGINE_by_id("padlock"));
+
__progname = ssh_get_progname(av[0]);
init_rng();
seed_rng();
diff -urN openssh-4.7p1.orig/ssh.c openssh-4.7p1/ssh.c
--- openssh-4.7p1.orig/ssh.c 2007-09-06 15:16:42.472974134 +0200
+++ openssh-4.7p1/ssh.c 2007-09-06 15:24:18.498961574 +0200
@@ -72,6 +72,7 @@
#include <openssl/evp.h>
#include <openssl/err.h>
+#include <openssl/engine.h>
#include "xmalloc.h"
#include "ssh.h"
@@ -560,6 +561,11 @@
SSLeay_add_all_algorithms();
ERR_load_crypto_strings();
+ /* Init available hardware crypto engines. */
+ ENGINE_load_builtin_engines();
+ ENGINE_register_all_complete();
+ ENGINE_set_default_ciphers(ENGINE_by_id("padlock"));
+
/* Initialize the command to execute on remote host. */
buffer_init(&command);
diff -urN openssh-4.7p1.orig/sshd.c openssh-4.7p1/sshd.c
--- openssh-4.7p1.orig/sshd.c 2007-09-06 15:16:42.472974134 +0200
+++ openssh-4.7p1/sshd.c 2007-09-06 15:25:03.001497629 +0200
@@ -75,6 +75,7 @@
#include <openssl/bn.h>
#include <openssl/md5.h>
#include <openssl/rand.h>
+#include <openssl/engine.h>
#ifdef HAVE_SECUREWARE
#include <sys/security.h>
#include <prot.h>
@@ -1376,6 +1377,11 @@
SSLeay_add_all_algorithms();
+ /* Init available hardware crypto engines. */
+ ENGINE_load_builtin_engines();
+ ENGINE_register_all_complete();
+ ENGINE_set_default_ciphers(ENGINE_by_id("padlock"));
+
/*
* Force logging to stderr until we have loaded the private host
* key (unless started from inetd)
diff -urN openssh-4.7p1.orig/ssh-keygen.c openssh-4.7p1/ssh-keygen.c
--- openssh-4.7p1.orig/ssh-keygen.c 2007-09-06 15:16:42.472974134 +0200
+++ openssh-4.7p1/ssh-keygen.c 2007-09-06 15:25:52.982847129 +0200
@@ -21,6 +21,7 @@
#include <openssl/evp.h>
#include <openssl/pem.h>
+#include <openssl/engine.h>
#include <errno.h>
#include <fcntl.h>
@@ -1073,6 +1074,12 @@
__progname = ssh_get_progname(argv[0]);
SSLeay_add_all_algorithms();
+
+ /* Init available hardware crypto engines. */
+ ENGINE_load_builtin_engines();
+ ENGINE_register_all_complete();
+ ENGINE_set_default_ciphers(ENGINE_by_id("padlock"));
+
log_init(argv[0], SYSLOG_LEVEL_INFO, SYSLOG_FACILITY_USER, 1);
init_rng();
diff -urN openssh-4.7p1.orig/ssh-keysign.c openssh-4.7p1/ssh-keysign.c
--- openssh-4.7p1.orig/ssh-keysign.c 2007-09-06 15:16:42.472974134 +0200
+++ openssh-4.7p1/ssh-keysign.c 2007-09-06 15:26:18.971328869 +0200
@@ -38,6 +38,7 @@
#include <openssl/evp.h>
#include <openssl/rand.h>
#include <openssl/rsa.h>
+#include <openssl/engine.h>
#include "xmalloc.h"
#include "log.h"
@@ -195,6 +196,12 @@
fatal("could not open any host key");
SSLeay_add_all_algorithms();
+
+ /* Init available hardware crypto engines. */
+ ENGINE_load_builtin_engines();
+ ENGINE_register_all_complete();
+ ENGINE_set_default_ciphers(ENGINE_by_id("padlock"));
+
for (i = 0; i < 256; i++)
rnd[i] = arc4random();
RAND_seed(rnd, sizeof(rnd));

View File

@@ -1,24 +0,0 @@
diff -urN openssl-0.9.8g.orig/ssl/ssl_algs.c openssl-0.9.8g/ssl/ssl_algs.c
+++ openssl-0.9.8g/ssl/ssl_algs.c 2007-11-13 19:50:35.356816442 +0100
--- openssl-0.9.8g.orig/ssl/ssl_algs.c 2007-11-13 19:40:02.820770267 +0100
@@ -57,6 +57,7 @@
*/
#include <stdio.h>
+#include <openssl/engine.h>
#include <openssl/objects.h>
#include <openssl/lhash.h>
#include "ssl_locl.h"
@@ -127,6 +128,12 @@
#endif
/* initialize cipher/digest methods table */
ssl_load_ciphers();
+
+ /* Init available hardware crypto engines. */
+ ENGINE_load_builtin_engines();
+ ENGINE_register_all_complete();
+ ENGINE_set_default_ciphers(ENGINE_by_id("padlock"));
+
return(1);
}

View File

@@ -1,620 +0,0 @@
diff -urN openssl-0.9.8g.orig/crypto/engine/eng_padlock.c openssl-0.9.8g/crypto/engine/eng_padlock.c
--- openssl-0.9.8g.orig/crypto/engine/eng_padlock.c 2007-11-13 20:00:28.390611512 +0100
+++ openssl-0.9.8g/crypto/engine/eng_padlock.c 2007-11-13 20:02:52.398818072 +0100
@@ -74,12 +74,23 @@
#ifndef OPENSSL_NO_AES
#include <openssl/aes.h>
#endif
+#ifndef OPENSSL_NO_SHA
+#include <openssl/sha.h>
+#endif
#include <openssl/rand.h>
#include <openssl/err.h>
#ifndef OPENSSL_NO_HW
#ifndef OPENSSL_NO_HW_PADLOCK
+/* PadLock RNG is disabled by default */
+#define PADLOCK_NO_RNG 1
+
+/* No ASM routines for SHA in MSC yet */
+#ifdef _MSC_VER
+#define OPENSSL_NO_SHA
+#endif
+
/* Attempt to have a single source for both 0.9.7 and 0.9.8 :-) */
#if (OPENSSL_VERSION_NUMBER >= 0x00908000L)
# ifndef OPENSSL_NO_DYNAMIC_ENGINE
@@ -135,52 +146,89 @@
static int padlock_init(ENGINE *e);
/* RNG Stuff */
+#ifndef PADLOCK_NO_RNG
static RAND_METHOD padlock_rand;
+#endif
/* Cipher Stuff */
#ifndef OPENSSL_NO_AES
static int padlock_ciphers(ENGINE *e, const EVP_CIPHER **cipher, const int **nids, int nid);
#endif
+/* Digest Stuff */
+#ifndef OPENSSL_NO_SHA
+static int padlock_digests(ENGINE *e, const EVP_MD **digest, const int **nids, int nid);
+#endif
+
/* Engine names */
static const char *padlock_id = "padlock";
static char padlock_name[100];
/* Available features */
-static int padlock_use_ace = 0; /* Advanced Cryptography Engine */
-static int padlock_use_rng = 0; /* Random Number Generator */
+enum padlock_flags {
+ PADLOCK_RNG = 0x01,
+ PADLOCK_ACE = 0x02,
+ PADLOCK_ACE2 = 0x04,
+ PADLOCK_PHE = 0x08,
+ PADLOCK_PMM = 0x10
+};
+enum padlock_flags padlock_flags;
+
+#define PADLOCK_HAVE_RNG (padlock_flags & PADLOCK_RNG)
+#define PADLOCK_HAVE_ACE (padlock_flags & (PADLOCK_ACE|PADLOCK_ACE2))
+#define PADLOCK_HAVE_ACE1 (padlock_flags & PADLOCK_ACE)
+#define PADLOCK_HAVE_ACE2 (padlock_flags & PADLOCK_ACE2)
+#define PADLOCK_HAVE_PHE (padlock_flags & PADLOCK_PHE)
+#define PADLOCK_HAVE_PMM (padlock_flags & PADLOCK_PMM)
+
#ifndef OPENSSL_NO_AES
static int padlock_aes_align_required = 1;
#endif
+/* Init / Max buffer sizes for SHA */
+#define PADLOCK_SHA_INIT_ORD 13 /* = 8192 */
+#define PADLOCK_SHA_MAX_ORD 13 /* = 8192 */
+
/* ===== Engine "management" functions ===== */
/* Prepare the ENGINE structure for registration */
static int
padlock_bind_helper(ENGINE *e)
{
+ char phe_string[20];
+
/* Check available features */
padlock_available();
-#if 1 /* disable RNG for now, see commentary in vicinity of RNG code */
- padlock_use_rng=0;
-#endif
+ /* Build PHE info with buffer size argument */
+ if (PADLOCK_HAVE_PHE)
+ BIO_snprintf(phe_string, sizeof(phe_string),
+ "PHE(%lu) ", 1UL << PADLOCK_SHA_MAX_ORD);
/* Generate a nice engine name with available features */
BIO_snprintf(padlock_name, sizeof(padlock_name),
- "VIA PadLock (%s, %s)",
- padlock_use_rng ? "RNG" : "no-RNG",
- padlock_use_ace ? "ACE" : "no-ACE");
+ "VIA PadLock: %s%s%s%s%s",
+ padlock_flags ? "" : "not supported",
+ PADLOCK_HAVE_RNG ? "RNG " : "",
+ PADLOCK_HAVE_ACE ? (PADLOCK_HAVE_ACE2 ? "ACE2 " : "ACE ") : "",
+ PADLOCK_HAVE_PHE ? phe_string : "",
+ PADLOCK_HAVE_PMM ? "PMM " : "");
/* Register everything or return with an error */
if (!ENGINE_set_id(e, padlock_id) ||
!ENGINE_set_name(e, padlock_name) ||
- !ENGINE_set_init_function(e, padlock_init) ||
+ !ENGINE_set_init_function(e, padlock_init)
#ifndef OPENSSL_NO_AES
- (padlock_use_ace && !ENGINE_set_ciphers (e, padlock_ciphers)) ||
+ || (PADLOCK_HAVE_ACE && !ENGINE_set_ciphers (e, padlock_ciphers))
+#endif
+#ifndef OPENSSL_NO_SHA
+ || (PADLOCK_HAVE_PHE && !ENGINE_set_digests (e, padlock_digests))
+#endif
+#ifndef PADLOCK_NO_RNG
+ || (PADLOCK_HAVE_RNG && !ENGINE_set_RAND (e, &padlock_rand))
#endif
- (padlock_use_rng && !ENGINE_set_RAND (e, &padlock_rand))) {
+ ) {
return 0;
}
@@ -210,7 +258,7 @@
static int
padlock_init(ENGINE *e)
{
- return (padlock_use_rng || padlock_use_ace);
+ return (padlock_flags);
}
/* This stuff is needed if this ENGINE is being compiled into a self-contained
@@ -237,6 +285,17 @@
/* ===== Here comes the "real" engine ===== */
+#ifdef __GNUC__
+#define likely(x) __builtin_expect(!!(x), 1)
+#define unlikely(x) __builtin_expect(!!(x), 0)
+#else
+#define likely(x) (x)
+#define unlikely(x) (x)
+#endif
+
+/* How to test if we need to typedef uint32_t ??? */
+typedef unsigned long uint32_t;
+
#ifndef OPENSSL_NO_AES
/* Some AES-related constants */
#define AES_BLOCK_SIZE 16
@@ -362,10 +421,22 @@
: "+a"(eax), "=d"(edx) : : "ecx");
/* Fill up some flags */
- padlock_use_ace = ((edx & (0x3<<6)) == (0x3<<6));
- padlock_use_rng = ((edx & (0x3<<2)) == (0x3<<2));
+ padlock_flags |= ((edx & (0x3<<3)) ? PADLOCK_RNG : 0);
+ padlock_flags |= ((edx & (0x3<<7)) ? PADLOCK_ACE : 0);
+ padlock_flags |= ((edx & (0x3<<9)) ? PADLOCK_ACE2 : 0);
+ padlock_flags |= ((edx & (0x3<<11)) ? PADLOCK_PHE : 0);
+ padlock_flags |= ((edx & (0x3<<13)) ? PADLOCK_PMM : 0);
- return padlock_use_ace + padlock_use_rng;
+ return padlock_flags;
+}
+
+static inline void
+padlock_htonl_block(uint32_t *data, size_t count)
+{
+ while (count--) {
+ asm volatile ("bswapl %0" : "+r"(*data));
+ data++;
+ }
}
#ifndef OPENSSL_NO_AES
@@ -374,12 +445,9 @@
padlock_bswapl(AES_KEY *ks)
{
size_t i = sizeof(ks->rd_key)/sizeof(ks->rd_key[0]);
- unsigned int *key = ks->rd_key;
+ uint32_t *key = (uint32_t*) ks->rd_key;
- while (i--) {
- asm volatile ("bswapl %0" : "+r"(*key));
- key++;
- }
+ padlock_htonl_block(key, i);
}
#endif
@@ -1154,6 +1222,415 @@
#endif /* OPENSSL_NO_AES */
+#ifndef OPENSSL_NO_SHA
+
+// #define PADLOCK_SHA_STAT 1
+
+union sha_all_ctx {
+ SHA_CTX sha_ctx;
+ SHA256_CTX sha256_ctx; /* shared with SHA224 */
+};
+
+typedef int (*f_sha_init)(void *c);
+typedef int (*f_sha_update)(void *c, const void *_data, size_t len);
+typedef int (*f_sha_final)(unsigned char *md, void *c);
+typedef void (*f_sha_padlock)(char *in, unsigned char *out, int count);
+
+struct sha_digest_functions {
+ f_sha_init init;
+ f_sha_update update;
+ f_sha_final final;
+ f_sha_padlock padlock;
+};
+
+/* Don't forget to initialize all relevant
+ * fields in padlock_sha_init() or face the
+ * consequences!!!
+ * BTW We don't use bzero() on this structure
+ * because zeroing fallback_ctx is
+ * a waste of time. */
+struct padlock_digest_data {
+ void *buf_start, *buf_alloc;
+ ssize_t used;
+ unsigned long order:8, bypass:1;
+ /* Fallback support */
+ struct sha_digest_functions fallback_fcs;
+ union sha_all_ctx fallback_ctx;
+#ifdef PADLOCK_SHA_STAT
+ size_t stat_count, stat_total;
+#endif
+};
+
+#ifdef PADLOCK_SHA_STAT
+size_t all_count, all_total;
+#endif
+
+#define DIGEST_DATA(ctx) ((struct padlock_digest_data *)(ctx->md_data))
+#define DDATA_FREE(ddata) ((size_t)(1L << ddata->order) - ddata->used)
+
+static void
+padlock_sha_bypass(struct padlock_digest_data *ddata)
+{
+ if (ddata->bypass)
+ return;
+
+ ddata->fallback_fcs.init(&ddata->fallback_ctx);
+ if (ddata->buf_start && ddata->used > 0) {
+ ddata->fallback_fcs.update(&ddata->fallback_ctx, ddata->buf_start, ddata->used);
+ if (ddata->buf_alloc) {
+ memset(ddata->buf_start, 0, ddata->used);
+ free(ddata->buf_alloc);
+ ddata->buf_alloc = 0;
+ }
+ }
+ ddata->buf_start = 0;
+ ddata->used = 0;
+ ddata->bypass = 1;
+
+ return;
+}
+
+static void
+padlock_do_sha1(char *in, char *out, int count)
+{
+ /* We can't store directly to *out as it
+ * doesn't have to be aligned. But who cares,
+ * it's only a few bytes... */
+ char buf[128+16];
+ unsigned char *output = NEAREST_ALIGNED(buf);
+
+ ((uint32_t*)output)[0] = 0x67452301;
+ ((uint32_t*)output)[1] = 0xEFCDAB89;
+ ((uint32_t*)output)[2] = 0x98BADCFE;
+ ((uint32_t*)output)[3] = 0x10325476;
+ ((uint32_t*)output)[4] = 0xC3D2E1F0;
+
+ asm volatile (".byte 0xf3,0x0f,0xa6,0xc8" /* rep xsha1 */
+ : "+S"(in), "+D"(output)
+ : "c"(count), "a"(0));
+
+ memcpy(out, output, 5 * sizeof(uint32_t));
+
+ padlock_htonl_block((uint32_t*)out, 5);
+}
+
+static void
+padlock_do_sha224(char *in, char *out, int count)
+{
+ /* We can't store directly to *out as it
+ * doesn't have to be aligned. But who cares,
+ * it's only a few bytes... */
+ char buf[128+16];
+ unsigned char *output = NEAREST_ALIGNED(buf);
+
+ ((uint32_t*)output)[0] = 0xC1059ED8UL;
+ ((uint32_t*)output)[1] = 0x367CD507UL;
+ ((uint32_t*)output)[2] = 0x3070DD17UL;
+ ((uint32_t*)output)[3] = 0xF70E5939UL;
+ ((uint32_t*)output)[4] = 0xFFC00B31UL;
+ ((uint32_t*)output)[5] = 0x68581511UL;
+ ((uint32_t*)output)[6] = 0x64F98FA7UL;
+ ((uint32_t*)output)[7] = 0xBEFA4FA4UL;
+
+ asm volatile (".byte 0xf3,0x0f,0xa6,0xd0" /* rep xsha256 */
+ : "+S"(in), "+D"(output)
+ : "c"(count), "a"(0));
+
+ memcpy(out, output, 7 * sizeof(uint32_t));
+
+ padlock_htonl_block((uint32_t*)out, 7);
+}
+
+static void
+padlock_do_sha256(char *in, char *out, int count)
+{
+ /* We can't store directly to *out as it
+ * doesn't have to be aligned. But who cares,
+ * it's only a few bytes... */
+ char buf[128+16];
+ unsigned char *output = NEAREST_ALIGNED(buf);
+
+ ((uint32_t*)output)[0] = 0x6A09E667;
+ ((uint32_t*)output)[1] = 0xBB67AE85;
+ ((uint32_t*)output)[2] = 0x3C6EF372;
+ ((uint32_t*)output)[3] = 0xA54FF53A;
+ ((uint32_t*)output)[4] = 0x510E527F;
+ ((uint32_t*)output)[5] = 0x9B05688C;
+ ((uint32_t*)output)[6] = 0x1F83D9AB;
+ ((uint32_t*)output)[7] = 0x5BE0CD19;
+
+ asm volatile (".byte 0xf3,0x0f,0xa6,0xd0" /* rep xsha256 */
+ : "+S"(in), "+D"(output)
+ : "c"(count), "a"(0));
+
+ memcpy(out, output, 8 * sizeof(uint32_t));
+
+ padlock_htonl_block((uint32_t*)out, 8);
+}
+
+static int
+padlock_sha_init(EVP_MD_CTX *ctx)
+{
+ struct padlock_digest_data *ddata = DIGEST_DATA(ctx);
+
+ ddata->used = 0;
+ ddata->bypass = 0;
+
+ ddata->order = PADLOCK_SHA_INIT_ORD;
+ ddata->buf_alloc = malloc((1L << ddata->order) + 16);
+ ddata->buf_start = NEAREST_ALIGNED(ddata->buf_alloc);
+
+ return 1;
+}
+
+static int
+padlock_sha1_init(EVP_MD_CTX *ctx)
+{
+ struct padlock_digest_data *ddata = DIGEST_DATA(ctx);
+
+ ddata->fallback_fcs.init = (f_sha_init)SHA1_Init;
+ ddata->fallback_fcs.update = (f_sha_update)SHA1_Update;
+ ddata->fallback_fcs.final = (f_sha_final)SHA1_Final;
+ ddata->fallback_fcs.padlock = (f_sha_padlock)padlock_do_sha1;
+
+ return padlock_sha_init(ctx);
+}
+
+static int
+padlock_sha224_init(EVP_MD_CTX *ctx)
+{
+ struct padlock_digest_data *ddata = DIGEST_DATA(ctx);
+
+ ddata->fallback_fcs.init = (f_sha_init)SHA224_Init;
+ ddata->fallback_fcs.update = (f_sha_update)SHA224_Update;
+ ddata->fallback_fcs.final = (f_sha_final)SHA224_Final;
+ ddata->fallback_fcs.padlock = (f_sha_padlock)padlock_do_sha224;
+
+ return padlock_sha_init(ctx);
+}
+
+static int
+padlock_sha256_init(EVP_MD_CTX *ctx)
+{
+ struct padlock_digest_data *ddata = DIGEST_DATA(ctx);
+
+ ddata->fallback_fcs.init = (f_sha_init)SHA256_Init;
+ ddata->fallback_fcs.update = (f_sha_update)SHA256_Update;
+ ddata->fallback_fcs.final = (f_sha_final)SHA256_Final;
+ ddata->fallback_fcs.padlock = (f_sha_padlock)padlock_do_sha256;
+
+ return padlock_sha_init(ctx);
+}
+
+static int
+padlock_sha_update(EVP_MD_CTX *ctx, const void *data, size_t length)
+{
+ struct padlock_digest_data *ddata = DIGEST_DATA(ctx);
+
+#ifdef PADLOCK_SHA_STAT
+ ddata->stat_count++;
+ ddata->stat_total += length;
+ all_count++;
+ all_total += length;
+#endif
+ if (unlikely(ddata->bypass)) {
+ ddata->fallback_fcs.update(&ddata->fallback_ctx, data, length);
+ return 1;
+ }
+ if (unlikely(DDATA_FREE(ddata) < length)) {
+ if (likely(ddata->used + length > (1 << PADLOCK_SHA_MAX_ORD))) {
+ /* Too much data to be stored -> bypass to SW SHA */
+ padlock_sha_bypass(ddata);
+ ddata->fallback_fcs.update(&ddata->fallback_ctx, data, length);
+ return 1;
+ } else {
+ /* Resize the alocated buffer */
+ char *new_buf;
+ size_t new_size;
+
+ while ((1<<++ddata->order) < (ddata->used + length));
+ new_size = (1<<ddata->order);
+ if(!(new_buf = realloc(ddata->buf_alloc, new_size + 16))) {
+ /* fallback plan again */
+ padlock_sha_bypass(ddata);
+ ddata->fallback_fcs.update(&ddata->fallback_ctx, data, length);
+ return 1;
+ }
+ ddata->buf_alloc = new_buf;
+ ddata->buf_start = NEAREST_ALIGNED(new_buf);
+ }
+ }
+
+ memcpy(ddata->buf_start + ddata->used, data, length);
+ ddata->used += length;
+
+ return 1;
+}
+
+static int
+padlock_sha_final(EVP_MD_CTX *ctx, unsigned char *md)
+{
+ struct padlock_digest_data *ddata = DIGEST_DATA(ctx);
+
+#ifdef PADLOCK_SHA_STAT
+ fprintf(stderr, "PadLock CTX: cnt=%zu, tot=%zu, avg=%zu\n",
+ ddata->stat_count, ddata->stat_total,
+ ddata->stat_count ? (ddata->stat_total/ddata->stat_count) : 0);
+ fprintf(stderr, "PadLock ALL: cnt=%zu, tot=%zu, avg=%zu\n",
+ all_count, all_total, all_count ? (all_total/all_count) : 0);
+#endif
+
+ if (ddata->bypass) {
+ ddata->fallback_fcs.final(md, &ddata->fallback_ctx);
+ return 1;
+ }
+
+ /* Pass the input buffer to PadLock microcode... */
+ ddata->fallback_fcs.padlock(ddata->buf_start, md, ddata->used);
+ memset(ddata->buf_start, 0, ddata->used);
+ free(ddata->buf_alloc);
+ ddata->buf_start = 0;
+ ddata->buf_alloc = 0;
+ ddata->used = 0;
+
+ return 1;
+}
+
+static int
+padlock_sha_copy(EVP_MD_CTX *to,const EVP_MD_CTX *from)
+{
+ struct padlock_digest_data *ddata_from = DIGEST_DATA(from);
+ struct padlock_digest_data *ddata_to = DIGEST_DATA(to);
+
+ memcpy(ddata_to, ddata_from, sizeof(struct padlock_digest_data));
+ if (ddata_from->buf_alloc) {
+ ddata_to->buf_alloc = malloc(1L << ddata_to->order);
+ if (!ddata_to->buf_start) {
+ fprintf(stderr, "%s(): malloc() failed\n", __func__);
+ exit(1);
+ }
+ ddata_to->buf_start = NEAREST_ALIGNED(ddata_to->buf_alloc);
+ memcpy(ddata_to->buf_start, ddata_from->buf_start, ddata_from->used);
+ }
+ return 1;
+}
+
+static int
+padlock_sha_cleanup(EVP_MD_CTX *ctx)
+{
+ struct padlock_digest_data *ddata = DIGEST_DATA(ctx);
+
+ if (ddata->buf_alloc) {
+ memset(ddata->buf_start, 0, ddata->used);
+ free(ddata->buf_alloc);
+ }
+
+ memset(ddata, 0, sizeof(struct padlock_digest_data));
+
+ return 1;
+}
+
+static const EVP_MD padlock_sha1_md = {
+ NID_sha1,
+ NID_sha1WithRSAEncryption,
+ SHA_DIGEST_LENGTH,
+ 0,
+ padlock_sha1_init,
+ padlock_sha_update,
+ padlock_sha_final,
+ padlock_sha_copy,
+ padlock_sha_cleanup,
+ EVP_PKEY_RSA_method,
+ SHA_CBLOCK,
+ sizeof(struct padlock_digest_data),
+};
+
+static const EVP_MD padlock_sha224_md = {
+ NID_sha224,
+ NID_sha224WithRSAEncryption,
+ SHA224_DIGEST_LENGTH,
+ 0,
+ padlock_sha224_init,
+ padlock_sha_update,
+ padlock_sha_final,
+ padlock_sha_copy,
+ padlock_sha_cleanup,
+ EVP_PKEY_RSA_method,
+ SHA_CBLOCK,
+ sizeof(struct padlock_digest_data),
+};
+
+static const EVP_MD padlock_sha256_md = {
+ NID_sha256,
+ NID_sha256WithRSAEncryption,
+ SHA256_DIGEST_LENGTH,
+ 0,
+ padlock_sha256_init,
+ padlock_sha_update,
+ padlock_sha_final,
+ padlock_sha_copy,
+ padlock_sha_cleanup,
+ EVP_PKEY_RSA_method,
+ SHA_CBLOCK,
+ sizeof(struct padlock_digest_data),
+};
+
+static int padlock_digest_nids[] = {
+#if !defined(OPENSSL_NO_SHA)
+ NID_sha1,
+#endif
+#if !defined(OPENSSL_NO_SHA256)
+#if !defined(OPENSSL_NO_SHA224)
+ NID_sha224,
+#endif
+ NID_sha256,
+#endif
+};
+
+static int padlock_digest_nids_num = sizeof(padlock_digest_nids)/sizeof(padlock_digest_nids[0]);
+
+static int
+padlock_digests (ENGINE *e, const EVP_MD **digest, const int **nids, int nid)
+{
+ /* No specific digest => return a list of supported nids ... */
+ if (!digest) {
+ *nids = padlock_digest_nids;
+ return padlock_digest_nids_num;
+ }
+
+ /* ... or the requested "digest" otherwise */
+ switch (nid) {
+#if !defined(OPENSSL_NO_SHA)
+ case NID_sha1:
+ *digest = &padlock_sha1_md;
+ break;
+#endif
+
+
+#if !defined(OPENSSL_NO_SHA256)
+#if !defined(OPENSSL_NO_SHA224)
+ case NID_sha224:
+ *digest = &padlock_sha224_md;
+ break;
+#endif /* OPENSSL_NO_SHA224 */
+
+ case NID_sha256:
+ *digest = &padlock_sha256_md;
+ break;
+#endif /* OPENSSL_NO_SHA256 */
+
+ default:
+ /* Sorry, we don't support this NID */
+ *digest = NULL;
+ return 0;
+ }
+
+ return 1;
+}
+
+#endif /* OPENSSL_NO_SHA */
+
+#ifndef PADLOCK_NO_RNG
/* ===== Random Number Generator ===== */
/*
* This code is not engaged. The reason is that it does not comply
@@ -1209,6 +1686,7 @@
padlock_rand_bytes, /* pseudorand */
padlock_rand_status, /* rand status */
};
+#endif /* PADLOCK_NO_RNG */
#endif /* COMPILE_HW_PADLOCK */

View File

@@ -1,21 +0,0 @@
--- clear.org 2008-09-07 01:10:26.000000000 +0200
+++ clear 2008-09-07 01:12:23.000000000 +0200
@@ -3,18 +3,3 @@
#
# See /usr/share/doc/openswan/policygroups.html for details.
#
-
-# root name servers should be in the clear
-192.58.128.30/32
-198.41.0.4/32
-192.228.79.201/32
-192.33.4.12/32
-128.8.10.90/32
-192.203.230.10/32
-192.5.5.241/32
-192.112.36.4/32
-128.63.2.53/32
-192.36.148.17/32
-193.0.14.129/32
-199.7.83.42/32
-202.12.27.33/32

View File

@@ -1,64 +0,0 @@
--- _startklips.old 2008-09-07 00:50:40.000000000 +0200
+++ _startklips 2008-09-07 00:50:42.000000000 +0200
@@ -146,23 +146,35 @@
# figure out ifconfig for interface
addr=
- eval `ifconfig $phys |
- awk '$1 == "inet" && $2 ~ /^addr:/ && $NF ~ /^Mask:/ {
- gsub(/:/, " ", $0)
- print "addr=" $3
- other = $5
- if ($4 == "Bcast")
- print "type=broadcast"
- else if ($4 == "P-t-P")
- print "type=pointopoint"
- else if (NF == 5) {
- print "type="
- other = ""
- } else
- print "type=unknown"
- print "otheraddr=" other
- print "mask=" $NF
- }'`
+ eval `ip addr show $phys | awk '$3 ~ /BROADCAST|POINTOPOINT/ {
+ if ($3 ~ /BROADCAST/)
+ print "type=broadcast";
+ else if ($3 ~ /POINTOPOINT/)
+ print "type=pointopoint";
+ else {
+ print "type=";
+ }
+ }'`
+
+ if [ "$type" == "broadcast" ]; then
+ eval `ip addr show $phys | awk '$1 == "inet" { gsub(/\//, " ");
+ print "addr=" $2;
+ print "mask=" $3;
+ print "otheraddr=" $5;
+ }'`
+ elif [ "$type" == "pointopoint" ]; then
+ eval `ip addr show $phys | awk '$1 == "inet" { gsub(/\//, " ");
+ print "addr=" $2;
+ print "mask=" $5;
+ print "otheraddr=" $4;
+ }'`
+ else
+ type="unknown"
+ otheraddr=
+ fi
+
+ eval `whatmask /$mask | awk -F': ' '$1 ~ /^Netmask =/ { print "mask=" $2 }'`
+
if test " $addr" = " "
then
echo "unable to determine address of \`$phys'"
@@ -171,7 +183,7 @@
if test " $type" = " unknown"
then
echo "\`$phys' is of an unknown type"
- exit 1
+ exit 1
fi
if test " $omtu" != " "
then

View File

@@ -1,30 +0,0 @@
--- /usr/lib/ipsec/_updown.klips 2007-10-14 00:56:15.000000000 +0200
+++ /usr/lib/ipsec/_updown.klips 2007-10-27 00:00:26.000000000 +0200
@@ -376,8 +376,8 @@
# opportunistic encryption work around
# need to provide route that eclipses default, without
# replacing it.
- it="ip route $1 0.0.0.0/1 $parms2 $parms3 &&
- ip route $1 128.0.0.0/1 $parms2 $parms3"
+ #it="ip route $1 0.0.0.0/1 $parms2 $parms3 &&
+ # ip route $1 128.0.0.0/1 $parms2 $parms3"
;;
*) it="ip route $1 $parms $parms2 $parms3"
;;
@@ -401,13 +401,13 @@
prepare-host:*|prepare-client:*)
# delete possibly-existing route (preliminary to adding a route)
case "$PLUTO_PEER_CLIENT" in
- "0.0.0.0/0")
+ "0.0.0.0/0")
# need to provide route that eclipses default, without
# replacing it.
parms1="0.0.0.0/1"
parms2="128.0.0.0/1"
- it="ip route delete $parms1 $IPROUTEARGS 2>&1 ; ip route delete $parms2 $IPROUTEARGS 2>&1"
- oops="`ip route delete $parms1 $IPROUTEARGS 2>&1 ; ip route delete $parms2 $IPROUTEARGS 2>&1`"
+ # it="ip route delete $parms1 $IPROUTEARGS 2>&1 ; ip route delete $parms2 $IPROUTEARGS 2>&1"
+ # oops="`ip route delete $parms1 $IPROUTEARGS 2>&1 ; ip route delete $parms2 $IPROUTEARGS 2>&1`"
;;
*)
parms="$PLUTO_PEER_CLIENT $IPROUTEARGS"

View File

@@ -1,24 +0,0 @@
--- /usr/lib/ipsec/_updown 2009-10-08 01:43:58.000000000 +0200
+++ /usr/lib/ipsec/_updown 2009-12-20 23:13:24.000000000 +0100
@@ -128,6 +128,21 @@
2.*) ;;
esac
+# add/remove rules to reach vpn-peers from ipfire
+src=$(/sbin/ip route|grep $PLUTO_MY_CLIENT|(read net key_dev dev key_proto key_kernel key_scope key_link key_src src; echo $src))
+
+case "$PLUTO_VERB" in
+"route-client")
+ logger -t "ipsec_updown" "iptables -t nat -A IPSECNAT -o $PLUTO_INTERFACE -s $PLUTO_ME -d $PLUTO_PEER_CLIENT -j SNAT --to $src"
+ /sbin/iptables -t nat -A IPSECNAT -o $PLUTO_INTERFACE -s $PLUTO_ME -d $PLUTO_PEER_CLIENT -j SNAT --to $src
+ ;;
+
+"unroute-client")
+ logger -t "ipsec_updown" "iptables -t nat -D IPSECNAT -o $PLUTO_INTERFACE -s $PLUTO_ME -d $PLUTO_PEER_CLIENT -j SNAT --to $src"
+ /sbin/iptables -t nat -D IPSECNAT -o $PLUTO_INTERFACE -s $PLUTO_ME -d $PLUTO_PEER_CLIENT -j SNAT --to $src
+ ;;
+esac
+
if [ -x /usr/lib/ipsec/_updown.${PLUTO_STACK} ]
then
exec /usr/lib/ipsec/_updown.${PLUTO_STACK} $*

View File

@@ -1,68 +0,0 @@
diff -Naur openswan-2.6.24.org/programs/_confread/Makefile openswan-2.6.24/programs/_confread/Makefile
--- openswan-2.6.24.org/programs/_confread/Makefile 2010-01-10 02:34:38.000000000 +0100
+++ openswan-2.6.24/programs/_confread/Makefile 2010-01-10 22:44:33.000000000 +0100
@@ -16,7 +16,13 @@
OPENSWANSRCDIR?=$(shell cd ../..; pwd)
include ${OPENSWANSRCDIR}/Makefile.inc
-EXTRA5MAN=ipsec.conf.5
+SUBDIRS=doc lib programs testing
+ifeq ($(findstring $(SUBDIRS),doc),doc)
+ EXTRA5MAN=ipsec.conf.5
+else
+ EXTRA5MAN=
+endif
+
CONFFILES=ipsec.conf
EXCONFILES=ipsec.win2k.conf
SOURCEDIR=_confread
diff -Naur openswan-2.6.24.org/programs/pluto/Makefile openswan-2.6.24/programs/pluto/Makefile
--- openswan-2.6.24.org/programs/pluto/Makefile 2010-01-10 02:34:38.000000000 +0100
+++ openswan-2.6.24/programs/pluto/Makefile 2010-01-10 22:51:15.000000000 +0100
@@ -172,7 +172,7 @@
all: $(BINNAMEPLUTO) $(BINNAMEADNSIFNEEDED) $(BINNAMEWHACK) #$(BINNAMEWHACKINIT)
programs: $(BINNAMEPLUTO) $(BINNAMEADNSIFNEEDED) $(BINNAMEWHACK) #$(BINNAMEWHACKINIT)
clean: cleanall
-install: doinstall
+install: doinstall doinstalldoc
endif
doinstall: all
@@ -188,6 +188,9 @@
$(INSTALL) $(INSTBINFLAGS) $(BINNAMEPLUTO) $(BINNAMEWHACK) $(LIBEXECDIR)
#$(INSTALL) $(INSTSUIDFLAGS) $(BINNAMEWHACKINIT) $(LIBEXECDIR)
if $(USE_ADNS) ; then $(INSTALL) $(INSTBINFLAGS) $(BINNAMEADNS) $(LIBEXECDIR) ; fi
+
+ifeq ($(findstring $(SUBDIRS),doc),doc)
+doinstalldoc:
$(INSTALL) $(INSTMANFLAGS) ${srcdir}pluto.8 $(PMANDIR)/ipsec_pluto.8
sh ${OPENSWANSRCDIR}/packaging/utils/manlink ${srcdir}pluto.8 | \
while read from to ; \
@@ -201,10 +204,7 @@
ln -s -f $$from $(FMANDIR)/$$to; \
done
-install_file_list:
- @echo $(LIBEXECDIR)/$(BINNAMEPLUTO)
- @if $(USE_ADNS) ; then echo $(LIBDIR)/$(BINNAMEADNS) ; fi
- @echo $(LIBEXECDIR)/$(BINNAMEWHACK)
+install_file_listdoc:
@echo $(PMANDIR)/ipsec_pluto.8
@sh ${OPENSWANSRCDIR}/packaging/utils/manlink pluto.8 | \
while read from to; \
@@ -217,6 +217,15 @@
do \
echo $(FMANDIR)/$$to; \
done
+else
+doinstalldoc:
+install_file_listdoc:
+endif
+
+install_file_list: install_file_listdoc
+ @echo $(LIBEXECDIR)/$(BINNAMEPLUTO)
+ @if $(USE_ADNS) ; then echo $(LIBDIR)/$(BINNAMEADNS) ; fi
+ @echo $(LIBEXECDIR)/$(BINNAMEWHACK)
alg_info_test: alg_info_test.o ike_alg.o constants.o defs.o log.o db_ops.o crypto.o $(LIBDESLITE) $(OPENSWANLIB)
$(CC) -o $@ $^ $(LDFLAGS) $(LIBSPLUTO)

View File

@@ -1,705 +0,0 @@
Submitted By: Kevin P. Fleming <kpfleming at linuxfromscratch dot org>
Date: 2004-05-02
Initial Package Version: 5beta
Origin: http://archives.linuxfromscratch.org/mail-archives/blfs-dev/2003-January/001960.html
Description: The patch was created from the portmap modified package by Mark Heerdink.
This patch provides the following improvements:
* Link against dynamic tcp_wrappers.
* Create an install target for portmap.
* Compilation and security fixes.
* Documentation fixes.
Originally created by Tushar Teredesai, updated by kpfleming to ensure
portmap will compile without tcp_wrappers installed.
diff -Naur portmap_5beta/BLURB portmap_5beta.gimli/BLURB
--- portmap_5beta/BLURB 1996-07-06 16:09:46.000000000 -0500
+++ portmap_5beta.gimli/BLURB 2002-01-07 09:13:58.000000000 -0600
@@ -1,3 +1,6 @@
+
+###############################################################################
+
@(#) BLURB 1.5 96/07/06 23:09:45
This is the fifth replacement portmapper release.
diff -Naur portmap_5beta/Makefile portmap_5beta.gimli/Makefile
--- portmap_5beta/Makefile 1996-07-06 16:06:19.000000000 -0500
+++ portmap_5beta.gimli/Makefile 2002-07-15 16:00:07.000000000 -0500
@@ -8,7 +8,7 @@
# if you disagree. See `man 3 syslog' for examples. Some syslog versions
# do not provide this flexibility.
#
-FACILITY=LOG_MAIL
+FACILITY=LOG_DAEMON
# To disable tcp-wrapper style access control, comment out the following
# macro definitions. Access control can also be turned off by providing
@@ -16,7 +16,8 @@
# daemon, is always treated as an authorized host.
HOSTS_ACCESS= -DHOSTS_ACCESS
-WRAP_LIB = $(WRAP_DIR)/libwrap.a
+#WRAP_LIB = $(WRAP_DIR)/libwrap.a
+WRAP_LIB = -lwrap
# Comment out if your RPC library does not allocate privileged ports for
# requests from processes with root privilege, or the new portmap will
@@ -71,7 +72,7 @@
# With verbose logging on, HP-UX 9.x and AIX 4.1 leave zombies behind when
# SIGCHLD is not ignored. Enable next macro for a fix.
#
-# ZOMBIES = -DIGNORE_SIGCHLD # AIX 4.x, HP-UX 9.x
+ZOMBIES = -DIGNORE_SIGCHLD # AIX 4.x, HP-UX 9.x
# Uncomment the following macro if your system does not have u_long.
#
@@ -81,7 +82,7 @@
# libwrap.a object library. WRAP_DIR should specify the directory with
# that library.
-WRAP_DIR= ../tcp_wrappers
+WRAP_DIR= $(TCPD_DIR)
# Auxiliary object files that may be missing from your C library.
#
@@ -99,22 +100,31 @@
# Comment out if your compiler talks ANSI and understands const
#
-CONST = -Dconst=
+#CONST = -Dconst=
### End of configurable stuff.
##############################
+GLIBC=$(shell grep -s -c __GLIBC__ /usr/include/features.h)
+
+ifeq ($(GLIBC),0)
+LIBS += # -lbsd
+else
+LIBS += -lnsl
+endif
+
+
SHELL = /bin/sh
-COPT = $(CONST) -Dperror=xperror $(HOSTS_ACCESS) $(CHECK_PORT) \
+COPT = $(CONST) $(HOSTS_ACCESS) $(CHECK_PORT) \
$(SYS) -DFACILITY=$(FACILITY) $(ULONG) $(ZOMBIES) $(SA_LEN) \
$(LOOPBACK) $(SETPGRP)
-CFLAGS = $(COPT) -O $(NSARCHS)
+CFLAGS = -Wall $(COPT) -O2 $(NSARCHS)
OBJECTS = portmap.o pmap_check.o from_local.o $(AUX)
all: portmap pmap_dump pmap_set
-portmap: $(OBJECTS) $(WRAP_DIR)/libwrap.a
+portmap: $(OBJECTS) # $(WRAP_DIR)/libwrap.a
$(CC) $(CFLAGS) -o $@ $(OBJECTS) $(WRAP_LIB) $(LIBS)
pmap_dump: pmap_dump.c
@@ -129,6 +139,17 @@
get_myaddress: get_myaddress.c
cc $(CFLAGS) -DTEST -o $@ get_myaddress.c $(LIBS)
+install: all
+ install -o root -g root -m 0755 -s portmap ${BASEDIR}/sbin
+ install -o root -g root -m 0755 -s pmap_dump ${BASEDIR}/usr/sbin
+ install -o root -g root -m 0755 -s pmap_set ${BASEDIR}/usr/sbin
+ install -o root -g root -m 0644 portmap.8 ${BASEDIR}/usr/share/man/man8
+ install -o root -g root -m 0644 pmap_dump.8 ${BASEDIR}/usr/share/man/man8
+ install -o root -g root -m 0644 pmap_set.8 ${BASEDIR}/usr/share/man/man8
+# cat README BLURB >${BASEDIR}/usr/share/doc/portmap/portmapper.txt
+# gzip -9f ${BASEDIR}/usr/share/doc/portmap/portmapper.txt
+
+
lint:
lint $(COPT) $(OBJECTS:%.o=%.c)
diff -Naur portmap_5beta/daemon.c portmap_5beta.gimli/daemon.c
--- portmap_5beta/daemon.c 1992-06-11 15:53:12.000000000 -0500
+++ portmap_5beta.gimli/daemon.c 2002-01-07 09:22:24.000000000 -0600
@@ -36,16 +36,13 @@
#endif /* LIBC_SCCS and not lint */
#include <fcntl.h>
-
-/* From unistd.h */
-#define STDIN_FILENO 0
-#define STDOUT_FILENO 1
-#define STDERR_FILENO 2
+#include <unistd.h>
+#include <sys/types.h>
/* From paths.h */
#define _PATH_DEVNULL "/dev/null"
-daemon(nochdir, noclose)
+int daemon(nochdir, noclose)
int nochdir, noclose;
{
int cpid;
diff -Naur portmap_5beta/from_local.c portmap_5beta.gimli/from_local.c
--- portmap_5beta/from_local.c 1996-05-31 08:52:58.000000000 -0500
+++ portmap_5beta.gimli/from_local.c 2002-01-07 09:25:49.000000000 -0600
@@ -35,7 +35,7 @@
* Mountain View, California 94043
*/
-#ifndef lint
+#ifdef lint
static char sccsid[] = "@(#) from_local.c 1.3 96/05/31 15:52:57";
#endif
@@ -51,6 +51,9 @@
#include <net/if.h>
#include <sys/ioctl.h>
#include <syslog.h>
+#include <stdlib.h>
+#include <string.h>
+#include <unistd.h>
#ifndef TRUE
#define TRUE 1
@@ -96,7 +99,7 @@
/* find_local - find all IP addresses for this host */
-find_local()
+int find_local()
{
struct ifconf ifc;
struct ifreq ifreq;
@@ -154,7 +157,7 @@
/* from_local - determine whether request comes from the local system */
-from_local(addr)
+int from_local(addr)
struct sockaddr_in *addr;
{
int i;
diff -Naur portmap_5beta/pmap_check.c portmap_5beta.gimli/pmap_check.c
--- portmap_5beta/pmap_check.c 1996-07-07 03:49:10.000000000 -0500
+++ portmap_5beta.gimli/pmap_check.c 2002-01-07 09:37:58.000000000 -0600
@@ -32,7 +32,7 @@
* Computing Science, Eindhoven University of Technology, The Netherlands.
*/
-#ifndef lint
+#ifdef lint
static char sccsid[] = "@(#) pmap_check.c 1.8 96/07/07 10:49:10";
#endif
@@ -45,6 +45,11 @@
#include <netinet/in.h>
#include <rpc/rpcent.h>
#endif
+#include <sys/types.h>
+#include <unistd.h>
+#ifdef HOSTS_ACCESS
+#include <tcpd.h>
+#endif
extern char *inet_ntoa();
@@ -110,7 +113,7 @@
/* check_default - additional checks for NULL, DUMP, GETPORT and unknown */
-check_default(addr, proc, prog)
+int check_default(addr, proc, prog)
struct sockaddr_in *addr;
u_long proc;
u_long prog;
@@ -128,7 +131,7 @@
/* check_privileged_port - additional checks for privileged-port updates */
-check_privileged_port(addr, proc, prog, port)
+int check_privileged_port(addr, proc, prog, port)
struct sockaddr_in *addr;
u_long proc;
u_long prog;
@@ -173,7 +176,7 @@
#else
-check_setunset(addr, proc, prog, port)
+int check_setunset(addr, proc, prog, port)
struct sockaddr_in *addr;
u_long proc;
u_long prog;
@@ -197,7 +200,7 @@
/* check_callit - additional checks for forwarded requests */
-check_callit(addr, proc, prog, aproc)
+int check_callit(addr, proc, prog, aproc)
struct sockaddr_in *addr;
u_long proc;
u_long prog;
@@ -249,13 +252,13 @@
};
struct proc_map *procp;
static struct proc_map procmap[] = {
- PMAPPROC_CALLIT, "callit",
- PMAPPROC_DUMP, "dump",
- PMAPPROC_GETPORT, "getport",
- PMAPPROC_NULL, "null",
- PMAPPROC_SET, "set",
- PMAPPROC_UNSET, "unset",
- 0, 0,
+ { PMAPPROC_CALLIT, "callit" },
+ { PMAPPROC_DUMP, "dump" },
+ { PMAPPROC_GETPORT, "getport" },
+ { PMAPPROC_NULL, "null" },
+ { PMAPPROC_SET, "set" },
+ { PMAPPROC_UNSET, "unset" },
+ { 0, 0 }
};
/*
@@ -269,7 +272,7 @@
if (prognum == 0) {
progname = "";
- } else if (rpc = getrpcbynumber((int) prognum)) {
+ } else if ((rpc = getrpcbynumber((int) prognum)) != NULL) {
progname = rpc->r_name;
} else {
sprintf(progname = progbuf, "%lu", prognum);
diff -Naur portmap_5beta/pmap_dump.8 portmap_5beta.gimli/pmap_dump.8
--- portmap_5beta/pmap_dump.8 1969-12-31 18:00:00.000000000 -0600
+++ portmap_5beta.gimli/pmap_dump.8 2002-01-07 09:13:58.000000000 -0600
@@ -0,0 +1,24 @@
+.TH PMAP_DUMP 8 "21th June 1997" Linux "Linux Programmer's Manual"
+.SH NAME
+pmap_dump \- print a list of all registered RPC programs
+.SH SYNOPSIS
+.B pmap_dump
+.SH DESCRIPTION
+The
+.B pmap_dump
+command can be used to restart a running portmapper or to print
+a list of all registered RPC programs on the local host. If you
+want to use the program to restart the portmapper you have to
+redirect the output of
+.B pmap_dump
+to a file. After this you can restart the portmapper and restore
+the list of the registered RPC programs by feeding the output
+of
+.B pmap_dump
+to the
+.B pmap_set
+command.
+.SH SEE ALSO
+.BR pmap_set (8),
+.BR rpc.portmap (8)
+
diff -Naur portmap_5beta/pmap_dump.c portmap_5beta.gimli/pmap_dump.c
--- portmap_5beta/pmap_dump.c 1992-06-11 15:53:16.000000000 -0500
+++ portmap_5beta.gimli/pmap_dump.c 2002-01-07 09:20:19.000000000 -0600
@@ -5,7 +5,7 @@
* Computing Science, Eindhoven University of Technology, The Netherlands.
*/
-#ifndef lint
+#ifdef lint
static char sccsid[] = "@(#) pmap_dump.c 1.1 92/06/11 22:53:15";
#endif
@@ -23,7 +23,20 @@
static char *protoname();
-main(argc, argv)
+#ifndef INADDR_LOOPBACK
+#define INADDR_LOOPBACK ntohl(inet_addr("127.0.0.1"))
+#endif
+
+static void get_myloopaddress(addrp)
+struct sockaddr_in *addrp;
+{
+ memset((char *) addrp, 0, sizeof(*addrp));
+ addrp->sin_family = AF_INET;
+ addrp->sin_port = htons(PMAPPORT);
+ addrp->sin_addr.s_addr = htonl(INADDR_LOOPBACK);
+}
+
+int main(argc, argv)
int argc;
char **argv;
{
@@ -31,7 +44,7 @@
register struct pmaplist *list;
register struct rpcent *rpc;
- get_myaddress(&addr);
+ get_myloopaddress(&addr);
for (list = pmap_getmaps(&addr); list; list = list->pml_next) {
rpc = getrpcbynumber((int) list->pml_map.pm_prog);
diff -Naur portmap_5beta/pmap_set.8 portmap_5beta.gimli/pmap_set.8
--- portmap_5beta/pmap_set.8 1969-12-31 18:00:00.000000000 -0600
+++ portmap_5beta.gimli/pmap_set.8 2002-01-07 09:13:58.000000000 -0600
@@ -0,0 +1,24 @@
+.TH PMAP_SET 8 "21th June 1997" Linux "Linux Programmer's Manual"
+.SH NAME
+pmap_set \- set the list of registered RPC programs
+.SH SYNOPSIS
+.B pmap_set
+.SH DESCRIPTION
+The
+.B pmap_set
+command can be used to restart a running portmapper or to set
+the list of registered RPC programs on the local host. If you
+want to use the program to restart the portmapper you have to
+redirect the output of
+.B pmap_dump
+to a file. After this you can restart the portmapper and restore
+the list of the registered RPC programs by feeding the output
+of
+.B pmap_dump
+to the
+.B pmap_set
+command.
+.SH SEE ALSO
+.BR pmap_dump (8),
+.BR rpc.portmap (8)
+
diff -Naur portmap_5beta/pmap_set.c portmap_5beta.gimli/pmap_set.c
--- portmap_5beta/pmap_set.c 1996-07-06 16:06:23.000000000 -0500
+++ portmap_5beta.gimli/pmap_set.c 2002-01-07 09:22:10.000000000 -0600
@@ -5,7 +5,7 @@
* Computing Science, Eindhoven University of Technology, The Netherlands.
*/
-#ifndef lint
+#ifdef lint
static char sccsid[] = "@(#) pmap_set.c 1.2 96/07/06 23:06:23";
#endif
@@ -17,7 +17,9 @@
#include <rpc/rpc.h>
#include <rpc/pmap_clnt.h>
-main(argc, argv)
+int parse_line(char *buf, u_long *prog, u_long *vers, int *prot, unsigned *port);
+
+int main(argc, argv)
int argc;
char **argv;
{
@@ -40,16 +42,16 @@
/* parse_line - convert line to numbers */
-parse_line(buf, prog, vers, prot, port)
+int parse_line(buf, prog, vers, prot, port)
char *buf;
u_long *prog;
u_long *vers;
int *prot;
unsigned *port;
{
- char proto_name[BUFSIZ];
+ char proto_name[256];
- if (sscanf(buf, "%lu %lu %s %u", prog, vers, proto_name, port) != 4) {
+ if (sscanf(buf, "%lu %lu %255s %u", prog, vers, proto_name, port) != 4) {
return (0);
}
if (strcmp(proto_name, "tcp") == 0) {
diff -Naur portmap_5beta/portmap.8 portmap_5beta.gimli/portmap.8
--- portmap_5beta/portmap.8 1969-12-31 18:00:00.000000000 -0600
+++ portmap_5beta.gimli/portmap.8 2002-01-07 09:13:58.000000000 -0600
@@ -0,0 +1,146 @@
+.\" Copyright (c) 1987 Sun Microsystems
+.\" Copyright (c) 1990, 1991 The Regents of the University of California.
+.\" All rights reserved.
+.\"
+.\" Redistribution and use in source and binary forms, with or without
+.\" modification, are permitted provided that the following conditions
+.\" are met:
+.\" 1. Redistributions of source code must retain the above copyright
+.\" notice, this list of conditions and the following disclaimer.
+.\" 2. Redistributions in binary form must reproduce the above copyright
+.\" notice, this list of conditions and the following disclaimer in the
+.\" documentation and/or other materials provided with the distribution.
+.\" 3. All advertising materials mentioning features or use of this software
+.\" must display the following acknowledgement:
+.\" This product includes software developed by the University of
+.\" California, Berkeley and its contributors.
+.\" 4. Neither the name of the University nor the names of its contributors
+.\" may be used to endorse or promote products derived from this software
+.\" without specific prior written permission.
+.\"
+.\" THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
+.\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+.\" ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
+.\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+.\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+.\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+.\" SUCH DAMAGE.
+.\"
+.\" from: @(#)portmap.8 5.3 (Berkeley) 3/16/91
+.\" $Id: portmap-5beta-compilation_fixes-3.patch,v 1.1 2004/06/08 04:53:09 jim Exp $
+.\"
+.Dd March 16, 1991
+.Dt PORTMAP 8
+.Os BSD 4.3
+.Sh NAME
+.Nm portmap
+.Nd
+.Tn DARPA
+port to
+.Tn RPC
+program number mapper
+.Sh SYNOPSIS
+.Nm portmap
+.Op Fl d
+.Op Fl v
+.Sh DESCRIPTION
+.Nm Portmap
+is a server that converts
+.Tn RPC
+program numbers into
+.Tn DARPA
+protocol port numbers.
+It must be running in order to make
+.Tn RPC
+calls.
+.Pp
+When an
+.Tn RPC
+server is started, it will tell
+.Nm portmap
+what port number it is listening to, and what
+.Tn RPC
+program numbers it is prepared to serve.
+When a client wishes to make an
+.Tn RPC
+call to a given program number,
+it will first contact
+.Nm portmap
+on the server machine to determine
+the port number where
+.Tn RPC
+packets should be sent.
+.Pp
+.Nm Portmap
+must be started before any
+.Tn RPC
+servers are invoked.
+.Pp
+Normally
+.Nm portmap
+forks and dissociates itself from the terminal
+like any other daemon.
+.Nm Portmap
+then logs errors using
+.Xr syslog 3 .
+.Pp
+Option available:
+.Bl -tag -width Ds
+.It Fl d
+(debug) prevents
+.Nm portmap
+from running as a daemon,
+and causes errors and debugging information
+to be printed to the standard error output.
+.It Fl v
+(verbose) run
+.Nm portmap
+in verbose mode.
+.El
+
+This
+.Nm portmap
+version is protected by the
+.Nm tcp_wrapper
+library. You have to give the clients access to
+.Nm portmap
+if they should be allowed to use it. To allow connects from clients of
+the .bar.com domain you could use the following line in /etc/hosts.allow:
+
+portmap: .bar.com
+
+You have to use the daemon name
+.Nm portmap
+for the daemon name (even if the binary has a different name). For the
+client names you can only use the keyword ALL or IP addresses (NOT
+host or domain names).
+
+For further information please have a look at the
+.Xr tcpd 8 ,
+.Xr hosts_allow 5
+and
+.Xr hosts_access 5
+manual pages.
+
+.Sh SEE ALSO
+.Xr inetd.conf 5 ,
+.Xr rpcinfo 8 ,
+.Xr pmap_set 8 ,
+.Xr pmap_dump 8 ,
+.Xr inetd 8
+.Xr tcpd 8
+.Xr hosts_access 5
+.Xr hosts_options 5
+.Sh BUGS
+If
+.Nm portmap
+crashes, all servers must be restarted.
+.Sh HISTORY
+The
+.Nm
+command appeared in
+.Bx 4.3
diff -Naur portmap_5beta/portmap.c portmap_5beta.gimli/portmap.c
--- portmap_5beta/portmap.c 1996-07-06 16:06:24.000000000 -0500
+++ portmap_5beta.gimli/portmap.c 2002-01-07 09:26:41.000000000 -0600
@@ -37,7 +37,7 @@
All rights reserved.\n";
#endif /* not lint */
-#ifndef lint
+#ifdef lint
static char sccsid[] = "@(#) portmap.c 1.6 96/07/06 23:06:23";
#endif /* not lint */
@@ -80,6 +80,9 @@
* Mountain View, California 94043
*/
+#if defined(__GLIBC__)
+#include <rpc/xdr.h>
+#endif /* __GLIBC__ */
#include <rpc/rpc.h>
#include <rpc/pmap_prot.h>
#include <stdio.h>
@@ -94,6 +97,8 @@
#ifdef SYSV40
#include <netinet/in.h>
#endif
+#include <sys/types.h>
+#include <unistd.h>
extern char *strerror();
#include <stdlib.h>
@@ -148,7 +153,7 @@
#endif
#endif
-main(argc, argv)
+int main(argc, argv)
int argc;
char **argv;
{
@@ -350,7 +355,7 @@
*/
/* remote host authorization check */
check_default(svc_getcaller(xprt), rqstp->rq_proc, (u_long) 0);
- if (!svc_sendreply(xprt, xdr_void, (caddr_t)0) && debugging) {
+ if (!svc_sendreply(xprt, (xdrproc_t) xdr_void, (caddr_t)0) && debugging) {
abort();
}
break;
@@ -359,7 +364,7 @@
/*
* Set a program,version to port mapping
*/
- if (!svc_getargs(xprt, xdr_pmap, &reg))
+ if (!svc_getargs(xprt, (xdrproc_t) xdr_pmap, (caddr_t) &reg))
svcerr_decode(xprt);
else {
/* reject non-local requests, protect priv. ports */
@@ -401,7 +406,7 @@
ans = 1;
}
done:
- if ((!svc_sendreply(xprt, xdr_int, (caddr_t)&ans)) &&
+ if ((!svc_sendreply(xprt, (xdrproc_t) xdr_int, (caddr_t)&ans)) &&
debugging) {
(void) fprintf(stderr, "svc_sendreply\n");
abort();
@@ -413,7 +418,7 @@
/*
* Remove a program,version to port mapping.
*/
- if (!svc_getargs(xprt, xdr_pmap, &reg))
+ if (!svc_getargs(xprt, (xdrproc_t) xdr_pmap, (caddr_t) &reg))
svcerr_decode(xprt);
else {
ans = 0;
@@ -447,7 +452,7 @@
prevpml->pml_next = pml;
free(t);
}
- if ((!svc_sendreply(xprt, xdr_int, (caddr_t)&ans)) &&
+ if ((!svc_sendreply(xprt, (xdrproc_t) xdr_int, (caddr_t)&ans)) &&
debugging) {
(void) fprintf(stderr, "svc_sendreply\n");
abort();
@@ -459,7 +464,7 @@
/*
* Lookup the mapping for a program,version and return its port
*/
- if (!svc_getargs(xprt, xdr_pmap, &reg))
+ if (!svc_getargs(xprt, (xdrproc_t) xdr_pmap, (caddr_t) &reg))
svcerr_decode(xprt);
else {
/* remote host authorization check */
@@ -474,7 +479,7 @@
port = fnd->pml_map.pm_port;
else
port = 0;
- if ((!svc_sendreply(xprt, xdr_int, (caddr_t)&port)) &&
+ if ((!svc_sendreply(xprt, (xdrproc_t) xdr_int, (caddr_t)&port)) &&
debugging) {
(void) fprintf(stderr, "svc_sendreply\n");
abort();
@@ -486,7 +491,7 @@
/*
* Return the current set of mapped program,version
*/
- if (!svc_getargs(xprt, xdr_void, NULL))
+ if (!svc_getargs(xprt, (xdrproc_t) xdr_void, (caddr_t) NULL))
svcerr_decode(xprt);
else {
/* remote host authorization check */
@@ -497,7 +502,7 @@
} else {
p = pmaplist;
}
- if ((!svc_sendreply(xprt, xdr_pmaplist,
+ if ((!svc_sendreply(xprt, (xdrproc_t) xdr_pmaplist,
(caddr_t)&p)) && debugging) {
(void) fprintf(stderr, "svc_sendreply\n");
abort();
@@ -645,7 +650,7 @@
timeout.tv_sec = 5;
timeout.tv_usec = 0;
a.rmt_args.args = buf;
- if (!svc_getargs(xprt, xdr_rmtcall_args, &a))
+ if (!svc_getargs(xprt, (xdrproc_t) xdr_rmtcall_args, (caddr_t) &a))
return;
/* host and service access control */
if (!check_callit(svc_getcaller(xprt),
@@ -674,9 +679,9 @@
au->aup_uid, au->aup_gid, au->aup_len, au->aup_gids);
}
a.rmt_port = (u_long)port;
- if (clnt_call(client, a.rmt_proc, xdr_opaque_parms, &a,
- xdr_len_opaque_parms, &a, timeout) == RPC_SUCCESS) {
- svc_sendreply(xprt, xdr_rmtcall_result, (caddr_t)&a);
+ if (clnt_call(client, a.rmt_proc, (xdrproc_t) xdr_opaque_parms, (char*) &a,
+ (xdrproc_t) xdr_len_opaque_parms, (char*) &a, timeout) == RPC_SUCCESS) {
+ svc_sendreply(xprt, (xdrproc_t) xdr_rmtcall_result, (caddr_t)&a);
}
AUTH_DESTROY(client->cl_auth);
clnt_destroy(client);

View File

@@ -1,17 +0,0 @@
Submitted By: Tushar Teredesai <tushar@linuxfromscratch.org>
Date: 2003-10-04
Initial Package Version: 5beta
Origin: None
Description: Fix compilation with recent glibc versions.
--- portmap_5beta/portmap.c 2003-03-10 12:32:26.000000000 -0600
+++ portmap_5beta/portmap.c.new 2003-03-10 12:38:01.000000000 -0600
@@ -129,7 +129,8 @@
static void callit();
struct pmaplist *pmaplist;
int debugging = 0;
-extern int errno;
+#include <errno.h>
+/* extern int errno; */
#include "pmap_check.h"

View File

@@ -1,11 +0,0 @@
diff -Naur r8101-1.013.00.org/src/r8101_n.c r8101-1.013.00/src/r8101_n.c
--- r8101-1.013.00.org/src/r8101_n.c 2009-07-14 09:10:53.000000000 +0200
+++ r8101-1.013.00/src/r8101_n.c 2009-10-22 18:19:07.000000000 +0200
@@ -103,6 +103,7 @@
static struct pci_device_id rtl8101_pci_tbl[] = {
{ PCI_DEVICE(PCI_VENDOR_ID_REALTEK, 0x8136), },
+ { 0x0001, 0x8168, PCI_ANY_ID, 0x2410, },
{0,},
};

View File

@@ -1,15 +0,0 @@
diff -Naur r8169-6.011.00.org/src/r8169_n.c r8169-6.011.00/src/r8169_n.c
--- r8169-6.011.00.org/src/r8169_n.c 2009-07-14 08:39:25.000000000 +0200
+++ r8169-6.011.00/src/r8169_n.c 2009-10-22 19:18:42.000000000 +0200
@@ -114,6 +114,11 @@
static struct pci_device_id rtl8169_pci_tbl[] = {
{ PCI_DEVICE(PCI_VENDOR_ID_REALTEK, 0x8167), 0, 0, RTL_CFG_0 },
{ PCI_DEVICE(PCI_VENDOR_ID_REALTEK, 0x8169), 0, 0, RTL_CFG_0 },
+ { PCI_DEVICE(PCI_VENDOR_ID_REALTEK, 0x8129), 0, 0, RTL_CFG_0 },
+ { PCI_DEVICE(PCI_VENDOR_ID_DLINK, 0x4300), 0, 0, RTL_CFG_0 },
+ { PCI_DEVICE(PCI_VENDOR_ID_AT, 0xC107), 0, 0, RTL_CFG_0 },
+ { PCI_DEVICE(0x16EC, 0x0116), 0, 0, RTL_CFG_0 },
+ { PCI_VENDOR_ID_LINKSYS, 0x1032, PCI_ANY_ID, 0x0024, 0, 0, RTL_CFG_0 },
{0,},
};

View File

@@ -1,21 +0,0 @@
--- linux-2.6.27.21/include/linux/skbuff.h 2009-04-03 10:39:10.000000000 +0000
+++ linux-2.6.27.21/include/linux/skbuff.h 2009-04-03 10:41:59.000000000 +0000
@@ -330,11 +330,17 @@
#if defined(CONFIG_MAC80211) || defined(CONFIG_MAC80211_MODULE)
__u8 do_not_encrypt:1;
#endif
- /* 0/13/14 bit hole */
+
#if defined(CONFIG_IMQ) || defined(CONFIG_IMQ_MODULE)
__u8 imq_flags:IMQ_F_BITS;
#endif
+#ifdef CONFIG_XEN
+ __u8 proto_data_valid:1,
+ proto_csum_blank:1;
+#endif
+ /* 10-16 bit hole */
+
#ifdef CONFIG_NET_DMA
dma_cookie_t dma_cookie;
#endif

View File

@@ -1,23 +0,0 @@
Submitted By: Alexander E. Patrakov
Date: 2004-05-09
Initial Package Version: 1.4.1
Origin: Alexander E. Patrakov
Upstream status: not submitted yet, probably will not be accepted
Description: Weakens rules for determining whether a character is printable.
Now only bytes < 0x20 and the 0x7f byte are considered to be unprintable.
The original rules were valid for ISO-8859-* and KOI*.
Without this fix, logging meaningful Russian messages in UTF-8 is impossible.
diff -u sysklogd-1.4.1/syslogd.c sysklogd-1.4.1.fixed/syslogd.c
--- sysklogd-1.4.1/syslogd.c 2001-03-12 00:40:10.000000000 +0500
+++ sysklogd-1.4.1.fixed/syslogd.c 2004-05-09 09:05:42.972864104 +0600
@@ -1449,7 +1449,7 @@
else if (c < 040) {
*q++ = '^';
*q++ = c ^ 0100;
- } else if (c == 0177 || (c & 0177) < 040) {
+ } else if (c == 0177) {
*q++ = '\\';
*q++ = '0' + ((c & 0300) >> 6);
*q++ = '0' + ((c & 0070) >> 3);

View File

@@ -1,833 +0,0 @@
Submitted By: Robert Connolly <robert at linuxfromscratch dot org> (ashes)
Date: 2005-01-23
Initial Package Version: 1.4.1
Upstream Status: Not submitted
Origin: http://www.infodrom.org/projects/sysklogd/cvs.php3
Description: This patch is a cvs snapshot update as of 20050123.
Minus the debain and CVS directories. See the CHANGES.
diff -Naur sysklogd-1.4.1/CHANGES sysklogd-20050123/CHANGES
--- sysklogd-1.4.1/CHANGES 2001-03-11 14:35:51.000000000 -0500
+++ sysklogd-20050123/CHANGES 2005-01-15 14:14:21.000000000 -0500
@@ -1,3 +1,42 @@
+Version 1.4.2
+
+ . Dmitry V. Levin <ldv@altlinux.org>
+ - Close file descriptor in FindSymbolFile() in ksym.c in order not to
+ leak file descriptors.
+ . Solar Designer <solar@openwall.com>
+ - improve crunch_list()
+ - Prevent potential buffer overflow in reading messages from the
+ kernel log ringbuffer.
+ - Ensure that "len" is not placed in a register, and that the
+ endtty() signal handler is not installed too early which could
+ cause a segmentation fault or worse.
+ . Steve Grubb <linux_4ever@yahoo.com>
+ - fix memory calculation in crunch_list()
+ . Martin Schulze <joey@infodrom.org>
+ - klogd will reconnect to the logger (mostly syslogd) after it went
+ away
+ - On heavily loaded system syslog will not spit out error messages
+ anymore when recvfrom() results in EAGAIN
+ - Makefile improvements
+ - Local copy of module.h
+ - Improved sysklogd.8
+ - Always log with syslogd's timezone and locale
+ - Remove trailing newline when forwarding messages
+ . Jon Burgess <Jon_Burgess@eur.3com.com>
+ - Moved the installation of the signal handler up a little bit so it
+ guaranteed to be available when the child is forked, hence, fixing a
+ race condition. This used to create problems with UML and fast
+ machines.
+ . Greg Trounson <gregt@maths.otago.ac.nz>
+ - Improved README.linux
+ . Ulf H<>rnhammar <Ulf.Harnhammar.9485@student.uu.se>
+ - Bondary check for fscanf() in InitKsyms() and CheckMapVersion()
+ . Colin Phipps <cph@cph.demon.co.uk>
+ - Don't block on the network socket in case of package los
+ . Dirk Mueller <mueller@kde.org>
+ - Don't crash when filesize limit is reached (e.g. without LFS)
+
+
Version 1.4.1
. klogd will set the console log level only if `-c' is given on the
@@ -30,3 +69,9 @@
. Olaf Kirch <okir@caldera.de>
- Remove Unix Domain Sockets and switch to Datagram Unix Sockets
. Several bugfixes and improvements, please refer to the .c files
+
+
+Local variables:
+mode: indented-text
+fill-column: 72
+End:
diff -Naur sysklogd-1.4.1/klogd.8 sysklogd-20050123/klogd.8
--- sysklogd-1.4.1/klogd.8 2001-03-11 14:35:51.000000000 -0500
+++ sysklogd-20050123/klogd.8 2001-03-11 18:00:51.000000000 -0500
@@ -321,7 +321,7 @@
.B klogd
to reload the module symbol information whenever a protection fault
is detected. Caution should be used before invoking the program in
-\'paranoid\' mode. The stability of the kernel and the operating
+\&'paranoid\&' mode. The stability of the kernel and the operating
environment is always under question when a protection fault occurs.
Since the klogd daemon must execute system calls in order to read the
module symbol information there is the possibility that the system may
diff -Naur sysklogd-1.4.1/klogd.c sysklogd-20050123/klogd.c
--- sysklogd-1.4.1/klogd.c 2001-03-11 14:40:10.000000000 -0500
+++ sysklogd-20050123/klogd.c 2004-04-29 09:29:03.000000000 -0400
@@ -243,6 +243,9 @@
* people have submitted patches: Troels Walsted Hansen
* <troels@thule.no>, Wolfgang Oertl <Wolfgang.Oertl@uibk.ac.at>
* and Thomas Roessler.
+ * Thu Apr 29 15:24:07 2004: Solar Designer <solar@openwall.com>
+ * Prevent potential buffer overflow in reading messages from the
+ * kernel log rinbuffer.
*/
@@ -938,7 +941,7 @@
* messages into this fresh buffer.
*/
memset(log_buffer, '\0', sizeof(log_buffer));
- if ( (rdcnt = ksyslog(2, log_buffer, sizeof(log_buffer))) < 0 )
+ if ( (rdcnt = ksyslog(2, log_buffer, sizeof(log_buffer)-1)) < 0 )
{
if ( errno == EINTR )
return;
diff -Naur sysklogd-1.4.1/ksym.c sysklogd-20050123/ksym.c
--- sysklogd-1.4.1/ksym.c 2000-09-12 17:53:31.000000000 -0400
+++ sysklogd-20050123/ksym.c 2004-07-16 02:48:27.000000000 -0400
@@ -105,6 +105,15 @@
*
* Tue Sep 12 23:48:12 CEST 2000: Martin Schulze <joey@infodrom.ffis.de>
* Close symbol file in InitKsyms() when an error occurred.
+ *
+ * Thu Apr 29 18:07:16 CEST 2004: Dmitry Levin <ldv@altlinux.org>
+ * Close file descriptor in FindSymbolFile() in order not to leak
+ * file descriptors.
+ *
+ * Fri Jul 16 08:32:49 CEST 2004: Ulf H<>rnhammar <Ulf.Harnhammar.9485@student.uu.se>
+ * Added boundary check for fscanf() in InitKsyms() and
+ * CheckMapVersion() to prevent an unintended crash when reading
+ * an incorrect System.map.
*/
@@ -236,7 +245,7 @@
*/
while ( !feof(sym_file) )
{
- if ( fscanf(sym_file, "%lx %c %s\n", &address, &type, sym)
+ if ( fscanf(sym_file, "%lx %c %511s\n", &address, &type, sym)
!= 3 )
{
Syslog(LOG_ERR, "Error in symbol table input (#1).");
@@ -344,6 +353,7 @@
if ( (sym_file = fopen(symfile, "r")) != (FILE *) 0 ) {
if (CheckMapVersion(symfile) == 1)
file = symfile;
+ fclose (sym_file);
}
if (sym_file == (FILE *) 0 || file == (char *) 0) {
sprintf (symfile, "%s", *mf);
@@ -352,6 +362,7 @@
if ( (sym_file = fopen(symfile, "r")) != (FILE *) 0 ) {
if (CheckMapVersion(symfile) == 1)
file = symfile;
+ fclose (sym_file);
}
}
@@ -533,7 +544,7 @@
version = 0;
while ( !feof(sym_file) && (version == 0) )
{
- if ( fscanf(sym_file, "%lx %c %s\n", &address, \
+ if ( fscanf(sym_file, "%lx %c %511s\n", &address, \
&type, sym) != 3 )
{
Syslog(LOG_ERR, "Error in symbol table input (#2).");
@@ -899,3 +910,11 @@
return;
}
#endif
+
+/*
+ * Local variables:
+ * c-indent-level: 8
+ * c-basic-offset: 8
+ * tab-width: 8
+ * End:
+ */
diff -Naur sysklogd-1.4.1/ksym_mod.c sysklogd-20050123/ksym_mod.c
--- sysklogd-1.4.1/ksym_mod.c 2000-09-12 17:15:28.000000000 -0400
+++ sysklogd-20050123/ksym_mod.c 2004-03-31 10:47:08.000000000 -0500
@@ -78,6 +78,11 @@
*
* Tue Sep 12 23:11:13 CEST 2000: Martin Schulze <joey@infodrom.ffis.de>
* Changed llseek() to lseek64() in order to skip a libc warning.
+ *
+ * Wed Mar 31 17:35:01 CEST 2004: Martin Schulze <joey@infodrom.org>
+ * Removed references to <linux/module.h> since it doesn't work
+ * anymore with its recent content from Linux 2.4/2.6, created
+ * module.h locally instead.
*/
@@ -89,11 +94,12 @@
#include <errno.h>
#include <sys/fcntl.h>
#include <sys/stat.h>
+#include "module.h"
#if !defined(__GLIBC__)
#include <linux/time.h>
-#include <linux/module.h>
+#include <linux/linkage.h>
#else /* __GLIBC__ */
-#include <linux/module.h>
+#include <linux/linkage.h>
extern __off64_t lseek64 __P ((int __fd, __off64_t __offset, int __whence));
extern int get_kernel_syms __P ((struct kernel_sym *__table));
#endif /* __GLIBC__ */
@@ -107,7 +113,7 @@
#if !defined(__GLIBC__)
/*
- * The following bit uses some kernel/library magic to product what
+ * The following bit uses some kernel/library magic to produce what
* looks like a function call to user level code. This function is
* actually a system call in disguise. The purpose of the getsyms
* call is to return a current copy of the in-kernel symbol table.
diff -Naur sysklogd-1.4.1/Makefile sysklogd-20050123/Makefile
--- sysklogd-1.4.1/Makefile 1998-10-12 16:25:15.000000000 -0400
+++ sysklogd-20050123/Makefile 2004-04-29 07:04:03.000000000 -0400
@@ -4,12 +4,15 @@
#CFLAGS= -g -DSYSV -Wall
#LDFLAGS= -g
CFLAGS= $(RPM_OPT_FLAGS) -O3 -DSYSV -fomit-frame-pointer -Wall -fno-strength-reduce
+# -D_FILE_OFFSET_BITS=64 -D_LARGEFILE_SOURCE
LDFLAGS= -s
# Look where your install program is.
INSTALL = /usr/bin/install
-BINDIR = /usr/sbin
-MANDIR = /usr/man
+
+# Destination paths, set prefix=/opt if required
+BINDIR = $(prefix)/usr/sbin
+MANDIR = $(prefix)/usr/share/man
# There is one report that under an all ELF system there may be a need to
# explicilty link with libresolv.a. If linking syslogd fails you may wish
@@ -34,8 +37,9 @@
# The following define establishes ownership for the man pages.
# Avery tells me that there is a difference between Debian and
# Slackware. Rather than choose sides I am leaving it up to the user.
-MAN_OWNER = root
-# MAN_OWNER = man
+MAN_USER = root
+MAN_GROUP = root
+MAN_PERMS = 644
# The following define establishes the name of the pid file for the
# syslogd daemon. The library include file (paths.h) defines the
@@ -116,7 +120,7 @@
${INSTALL} -m 500 -s klogd ${BINDIR}/klogd
install_man:
- ${INSTALL} -o ${MAN_OWNER} -g ${MAN_OWNER} -m 644 sysklogd.8 ${MANDIR}/man8/sysklogd.8
- ${INSTALL} -o ${MAN_OWNER} -g ${MAN_OWNER} -m 644 syslogd.8 ${MANDIR}/man8/syslogd.8
- ${INSTALL} -o ${MAN_OWNER} -g ${MAN_OWNER} -m 644 syslog.conf.5 ${MANDIR}/man5/syslog.conf.5
- ${INSTALL} -o ${MAN_OWNER} -g ${MAN_OWNER} -m 644 klogd.8 ${MANDIR}/man8/klogd.8
+ ${INSTALL} -o ${MAN_USER} -g ${MAN_GROUP} -m ${MAN_PERMS} sysklogd.8 ${MANDIR}/man8/sysklogd.8
+ ${INSTALL} -o ${MAN_USER} -g ${MAN_GROUP} -m ${MAN_PERMS} syslogd.8 ${MANDIR}/man8/syslogd.8
+ ${INSTALL} -o ${MAN_USER} -g ${MAN_GROUP} -m ${MAN_PERMS} syslog.conf.5 ${MANDIR}/man5/syslog.conf.5
+ ${INSTALL} -o ${MAN_USER} -g ${MAN_GROUP} -m ${MAN_PERMS} klogd.8 ${MANDIR}/man8/klogd.8
diff -Naur sysklogd-1.4.1/module.h sysklogd-20050123/module.h
--- sysklogd-1.4.1/module.h 1969-12-31 19:00:00.000000000 -0500
+++ sysklogd-20050123/module.h 2004-07-27 07:36:10.000000000 -0400
@@ -0,0 +1,90 @@
+/*
+ module.h - Miscellaneous module definitions
+ Copyright (c) 1996 Richard Henderson <rth@tamu.edu>
+ Copyright (c) 2004 Martin Schulze <joey@infodrom.org>
+
+ This file is part of the sysklogd package.
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2 of the License, or
+ (at your option) any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program; if not, write to the Free Software
+ Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+*/
+
+/* ChangeLog:
+ *
+ * Wed Mar 31 17:35:01 CEST 2004: Martin Schulze <joey@infodrom.org>
+ * Created local copy of module.h based on the content of Linux
+ * 2.2 since <linux/module.h> doesn't work anymore with its
+ * recent content from Linux 2.4/2.6.
+ */
+
+#include <asm/atomic.h>
+
+#define MODULE_NAME_LEN 60
+
+struct kernel_sym
+{
+ unsigned long value;
+ char name[MODULE_NAME_LEN];
+};
+
+
+struct list_head {
+ struct list_head *next, *prev;
+};
+
+
+struct module_info
+{
+ unsigned long addr;
+ unsigned long size;
+ unsigned long flags;
+ long usecount;
+};
+
+
+struct module
+{
+ unsigned long size_of_struct; /* == sizeof(module) */
+ struct module *next;
+ const char *name;
+ unsigned long size;
+
+ union
+ {
+ int usecount;
+ long pad;
+ } uc; /* Needs to keep its size - so says rth */
+
+ unsigned long flags; /* AUTOCLEAN et al */
+
+ unsigned nsyms;
+ unsigned ndeps;
+
+ struct module_symbol *syms;
+ struct module_ref *deps;
+ struct module_ref *refs;
+ int (*init)(void);
+ void (*cleanup)(void);
+ const struct exception_table_entry *ex_table_start;
+ const struct exception_table_entry *ex_table_end;
+#ifdef __alpha__
+ unsigned long gp;
+#endif
+ /* Members past this point are extensions to the basic
+ module support and are optional. Use mod_opt_member()
+ to examine them. */
+ const struct module_persist *persist_start;
+ const struct module_persist *persist_end;
+ int (*can_unload)(void);
+};
diff -Naur sysklogd-1.4.1/pidfile.c sysklogd-20050123/pidfile.c
--- sysklogd-1.4.1/pidfile.c 1998-02-10 17:37:12.000000000 -0500
+++ sysklogd-20050123/pidfile.c 2003-09-27 22:38:18.000000000 -0400
@@ -87,7 +87,7 @@
int fd;
int pid;
- if ( ((fd = open(pidfile, O_RDWR|O_CREAT, 0644)) == -1)
+ if ( ((fd = open(pidfile, O_RDWR|O_CREAT|O_TRUNC, 0644)) == -1)
|| ((f = fdopen(fd, "r+")) == NULL) ) {
fprintf(stderr, "Can't open or create %s.\n", pidfile);
return 0;
diff -Naur sysklogd-1.4.1/README.1st sysklogd-20050123/README.1st
--- sysklogd-1.4.1/README.1st 1997-06-02 13:21:39.000000000 -0400
+++ sysklogd-20050123/README.1st 2003-09-04 09:22:23.000000000 -0400
@@ -1,5 +1,5 @@
-Very important information before using version 1.3
----------------------------------------------------
+Important information
+---------------------
The included version of syslogd behaves in a slightly different manner
to the one in former releases. Please review the following important
@@ -63,3 +63,10 @@
these scripts should remove all old .pid files found in /var/run.
This will insure that klogd and syslogd start properly even if prior
executions have been terminated harshly.
+
+* Large file support, i.e. support to write to log files that are
+ larger than 2 GB is not part of syslogd, but a matter of the Glibc
+ emitting different system calls to the kernel interface. To support
+ large files you'll have to compile syslogd with the compiler defines
+ -D_FILE_OFFSET_BITS=64 -D_LARGEFILE_SOURCE so that glibc adjusts the
+ system calls.
diff -Naur sysklogd-1.4.1/README.linux sysklogd-20050123/README.linux
--- sysklogd-1.4.1/README.linux 1999-01-18 19:09:12.000000000 -0500
+++ sysklogd-20050123/README.linux 2004-07-09 13:22:29.000000000 -0400
@@ -40,12 +40,17 @@
a useful addition to the software gene pool.
There is a mailing list covering this package and syslog in general.
-The lists address is sysklogd@Infodrom.North.DE . To subscribe send a
-mail to Majordomo@Infodrom.North.DE with a line "subscribe sysklogd"
+The lists address is infodrom-sysklogd@lists.infodrom.org . To subscribe send a
+mail to majordomo@lists.infodrom.org with a line "subscribe infodrom-sysklogd"
in the message body.
-New versions of this package will be available at Joey's ftp server.
-ftp://ftp.infodrom.north.de/pub/people/joey/sysklogd/
+A second mailing list exists as infodrom-sysklogd-cvs@lists.infodrom.org. Only
+CVS messages and diffs are distributed there. Whenever new code is added to
+sysklogd, CVS generates a mail from these changes which will be sent to
+this list. Discussions will take place on the first list.
+
+The latest version of this software can be found at:
+http://www.infodrom.org/projects/sysklogd/download.php3
Best regards,
@@ -67,6 +72,6 @@
Martin Schulze
Infodrom Oldenburg
-joey@linux.de
+joey@infodrom.org
-And a host of bug reporters whose contributions cannot be underestimated.
+And a number of bug reporters whose contributions cannot be underestimated.
diff -Naur sysklogd-1.4.1/sysklogd.8 sysklogd-20050123/sysklogd.8
--- sysklogd-1.4.1/sysklogd.8 2001-03-11 14:35:51.000000000 -0500
+++ sysklogd-20050123/sysklogd.8 2004-07-09 13:33:32.000000000 -0400
@@ -84,7 +84,7 @@
.B MAXFUNIX
within the syslogd.c source file. An example for a chroot() daemon is
described by the people from OpenBSD at
-http://www.psionic.com/papers/dns.html.
+<http://www.guides.sk/psionic/dns/>.
.TP
.B "\-d"
Turns on debug mode. Using this the daemon will not proceed a
@@ -117,7 +117,8 @@
between two \fI-- MARK --\fR lines is 20 minutes. This can be changed
with this option. Setting the
.I interval
-to zero turns it off entirely.
+to zero turns it off entirely. Depending on other log messages
+generated these lines may not be written consecutively.
.TP
.B "\-n"
Avoid auto-backgrounding. This is needed especially if the
@@ -364,8 +365,10 @@
To avoid this in further times no messages that were received from a
remote host are sent out to another (or the same) remote host
-anymore. If there are scenarios where this doesn't make sense, please
-drop me (Joey) a line.
+anymore. If you experience are setup in which this doesn't make
+sense, please use the
+.B \-h
+commandline switch.
If the remote host is located in the same domain as the host,
.B syslogd
diff -Naur sysklogd-1.4.1/syslog.c sysklogd-20050123/syslog.c
--- sysklogd-1.4.1/syslog.c 2001-03-11 14:35:51.000000000 -0500
+++ sysklogd-20050123/syslog.c 2003-08-27 11:56:01.000000000 -0400
@@ -47,6 +47,9 @@
* Sun Mar 11 20:23:44 CET 2001: Martin Schulze <joey@infodrom.ffis.de>
* Use SOCK_DGRAM for loggin, renables it to work.
*
+ * Wed Aug 27 17:48:16 CEST 2003: Martin Schulze <joey@Infodrom.org>
+ * Improved patch by Michael Pomraning <mjp@securepipe.com> to
+ * reconnect klogd to the logger after it went away.
*/
#include <sys/types.h>
@@ -98,6 +101,7 @@
register char *p;
time_t now;
int fd, saved_errno;
+ int result;
char tbuf[2048], fmt_cpy[1024], *stdp = (char *) 0;
saved_errno = errno;
@@ -167,7 +171,16 @@
}
/* output the message to the local logger */
- if (write(LogFile, tbuf, cnt + 1) >= 0 || !(LogStat&LOG_CONS))
+ result = write(LogFile, tbuf, cnt + 1);
+
+ if (result == -1
+ && (errno == ECONNRESET || errno == ENOTCONN || errno == ECONNREFUSED)) {
+ closelog();
+ openlog(LogTag, LogStat | LOG_NDELAY, LogFacility);
+ result = write(LogFile, tbuf, cnt + 1);
+ }
+
+ if (result >= 0 || !(LogStat&LOG_CONS))
return;
/*
diff -Naur sysklogd-1.4.1/syslog.conf.5 sysklogd-20050123/syslog.conf.5
--- sysklogd-1.4.1/syslog.conf.5 1999-08-21 06:49:14.000000000 -0400
+++ sysklogd-20050123/syslog.conf.5 2003-05-22 15:31:20.000000000 -0400
@@ -64,7 +64,7 @@
The
.I facility
is one of the following keywords:
-.BR auth ", " authpriv ", " cron ", " daemon ", " kern ", " lpr ", "
+.BR auth ", " authpriv ", " cron ", " daemon ", " ftp ", " kern ", " lpr ", "
.BR mail ", " mark ", " news ", " security " (same as " auth "), "
.BR syslog ", " user ", " uucp " and " local0 " through " local7 .
The keyword
@@ -121,12 +121,21 @@
This
.BR syslogd (8)
-has a syntax extension to the original BSD source, that makes its use
+has a syntax extension to the original BSD source, which makes its use
more intuitively. You may precede every priority with an equation sign
-(``='') to specify only this single priority and not any of the
-above. You may also (both is valid, too) precede the priority with an
-exclamation mark (``!'') to ignore all that priorities, either exact
-this one or this and any higher priority. If you use both extensions
+(``='') to specify that
+.B syslogd
+should only refer to this single priority and not this priority and
+all higher priorities.
+
+You may also precide the priority with an exclamation mark (``!'') if
+you want
+.B syslogd
+to ignore this priority and all higher priorities.
+You may even use both, the exclamation mark and the equation sign if
+you want
+.B syslogd
+to ignore only this single priority. If you use both extensions
than the exclamation mark must occur before the equation sign, just
use it intuitively.
@@ -300,7 +309,7 @@
.B syslogd
log all messages that come with either the
.BR info " or the " notice
-facility into the file
+priority into the file
.IR /var/log/messages ,
except for all messages that use the
.B mail
diff -Naur sysklogd-1.4.1/syslogd.c sysklogd-20050123/syslogd.c
--- sysklogd-1.4.1/syslogd.c 2001-03-11 14:40:10.000000000 -0500
+++ sysklogd-20050123/syslogd.c 2005-01-15 14:13:08.000000000 -0500
@@ -441,6 +441,39 @@
* Don't return a closed fd if `-a' is called with a wrong path.
* Thanks to Bill Nottingham <notting@redhat.com> for providing
* a patch.
+ * Thu Apr 13 05:08:10 CEST 2001: Jon Burgess <Jon_Burgess@eur.3com.com>
+ * Moved the installation of the signal handler up a little bit
+ * so it guaranteed to be available when the child is forked,
+ * hence, fixing a race condition. This used to create problems
+ * with UML and fast machines.
+ *
+ * Sat Apr 17 18:03:05 CEST 2004: Steve Grubb <linux_4ever@yahoo.com>
+ * Correct memory allocation for for commandline arguments in
+ * crunch_list().
+ *
+ * Thu Apr 29 12:38:39 CEST 2004: Solar Designer <solar@openwall.com>
+ * Applied Openwall paranoia patches to improve crunch_list().
+ *
+ * Tue May 4 16:47:30 CEST 2004: Solar Designer <solar@openwall.com>
+ * Ensure that "len" is not placed in a register, and that the
+ * endtty() signal handler is not installed too early which could
+ * cause a segmentation fault or worse.
+ *
+ * Tue May 4 16:52:01 CEST 2004: Solar Designer <solar@openwall.com>
+ * Adjust the size of a variable to prevent a buffer overflow
+ * should _PATH_DEV ever contain something different than "/dev/".
+ *
+ * Tue Nov 2 20:28:23 CET 2004: Colin Phipps <cph@cph.demon.co.uk>
+ * Don't block on the network socket, in case a packet gets lost
+ * between select and recv.
+ *
+ * Sun Nov 7 12:28:47 CET 2004: Martin Schulze <joey@infodrom.org>
+ * Discard any timestamp information found in received syslog
+ * messages. This will affect local messages sent from a
+ * different timezone.
+ *
+ * Sun Nov 7 13:47:00 CET 2004: Martin Schulze <joey@infodrom.org>
+ * Remove trailing newline when forwarding messages.
*/
@@ -890,11 +923,11 @@
dprintf("Checking pidfile.\n");
if (!check_pid(PidFile))
{
+ signal (SIGTERM, doexit);
if (fork()) {
/*
* Parent process
*/
- signal (SIGTERM, doexit);
sleep(300);
/*
* Not reached unless something major went wrong. 5
@@ -992,6 +1025,7 @@
(void) signal(SIGCHLD, reapchild);
(void) signal(SIGALRM, domark);
(void) signal(SIGUSR1, Debug ? debug_switch : SIG_IGN);
+ (void) signal(SIGXFSZ, SIG_IGN);
(void) alarm(TIMERINTVL);
/* Create a partial message table for all file descriptors. */
@@ -1141,13 +1175,13 @@
*/
printchopped(from, line, \
i + 2, finet);
- } else if (i < 0 && errno != EINTR) {
+ } else if (i < 0 && errno != EINTR && errno != EAGAIN) {
dprintf("INET socket error: %d = %s.\n", \
errno, strerror(errno));
logerror("recvfrom inet");
/* should be harmless now that we set
* BSDCOMPAT on the socket */
- sleep(10);
+ sleep(1);
}
}
#endif
@@ -1216,6 +1250,7 @@
{
int fd, on = 1;
struct sockaddr_in sin;
+ int sockflags;
fd = socket(AF_INET, SOCK_DGRAM, 0);
if (fd < 0) {
@@ -1241,6 +1276,24 @@
close(fd);
return -1;
}
+ /* We must not block on the network socket, in case a packet
+ * gets lost between select and recv, otherise the process
+ * will stall until the timeout, and other processes trying to
+ * log will also stall.
+ */
+ if ((sockflags = fcntl(fd, F_GETFL)) != -1) {
+ sockflags |= O_NONBLOCK;
+ /*
+ * SETFL could fail too, so get it caught by the subsequent
+ * error check.
+ */
+ sockflags = fcntl(fd, F_SETFL, sockflags);
+ }
+ if (sockflags == -1) {
+ logerror("fcntl(O_NONBLOCK), suspending inet");
+ close(fd);
+ return -1;
+ }
if (bind(fd, (struct sockaddr *) &sin, sizeof(sin)) < 0) {
logerror("bind, suspending inet");
close(fd);
@@ -1254,30 +1307,26 @@
crunch_list(list)
char *list;
{
- int count, i;
+ int i, m, n;
char *p, *q;
char **result = NULL;
p = list;
/* strip off trailing delimiters */
- while (p[strlen(p)-1] == LIST_DELIMITER) {
- count--;
+ while (*p && p[strlen(p)-1] == LIST_DELIMITER)
p[strlen(p)-1] = '\0';
- }
/* cut off leading delimiters */
- while (p[0] == LIST_DELIMITER) {
- count--;
+ while (p[0] == LIST_DELIMITER)
p++;
- }
- /* count delimiters to calculate elements */
- for (count=i=0; p[i]; i++)
- if (p[i] == LIST_DELIMITER) count++;
+ /* count delimiters to calculate the number of elements */
+ for (n = i = 0; p[i]; i++)
+ if (p[i] == LIST_DELIMITER) n++;
- if ((result = (char **)malloc(sizeof(char *) * count+2)) == NULL) {
+ if ((result = (char **)malloc(sizeof(char *) * (n + 2))) == NULL) {
printf ("Sorry, can't get enough memory, exiting.\n");
- exit(0);
+ exit(1);
}
/*
@@ -1285,30 +1334,28 @@
* characters are different from any delimiters,
* so we don't have to care about this.
*/
- count = 0;
- while ((q=strchr(p, LIST_DELIMITER))) {
- result[count] = (char *) malloc((q - p + 1) * sizeof(char));
- if (result[count] == NULL) {
+ m = 0;
+ while ((q = strchr(p, LIST_DELIMITER)) && m < n) {
+ result[m] = (char *) malloc((q - p + 1) * sizeof(char));
+ if (result[m] == NULL) {
printf ("Sorry, can't get enough memory, exiting.\n");
- exit(0);
+ exit(1);
}
- strncpy(result[count], p, q - p);
- result[count][q - p] = '\0';
+ memcpy(result[m], p, q - p);
+ result[m][q - p] = '\0';
p = q; p++;
- count++;
+ m++;
}
- if ((result[count] = \
- (char *)malloc(sizeof(char) * strlen(p) + 1)) == NULL) {
+ if ((result[m] = strdup(p)) == NULL) {
printf ("Sorry, can't get enough memory, exiting.\n");
- exit(0);
+ exit(1);
}
- strcpy(result[count],p);
- result[++count] = NULL;
+ result[++m] = NULL;
#if 0
- count=0;
- while (result[count])
- dprintf ("#%d: %s\n", count, StripDomains[count++]);
+ m = 0;
+ while (result[m])
+ dprintf ("#%d: %s\n", m, result[m++]);
#endif
return result;
}
@@ -1548,21 +1595,25 @@
/*
* Check to see if msg looks non-standard.
+ *
+ * A message looks like
+ * Nov 17 11:42:33 CRON[
+ * 01234567890123456
+ * ^ ^ ^ ^ ^
+ *
+ * Remote messages are not accompanied by a timestamp.
+ * Local messages are accompanied by a timestamp (program's timezone)
*/
msglen = strlen(msg);
- if (msglen < 16 || msg[3] != ' ' || msg[6] != ' ' ||
- msg[9] != ':' || msg[12] != ':' || msg[15] != ' ')
- flags |= ADDDATE;
-
- (void) time(&now);
- if (flags & ADDDATE)
- timestamp = ctime(&now) + 4;
- else {
- timestamp = msg;
+ if (!(msglen < 16 || msg[3] != ' ' || msg[6] != ' ' ||
+ msg[9] != ':' || msg[12] != ':' || msg[15] != ' ')) {
msg += 16;
msglen -= 16;
}
+ (void) time(&now);
+ timestamp = ctime(&now) + 4;
+
/* extract facility and priority level */
if (flags & MARK)
fac = LOG_NFACILITIES;
@@ -1771,7 +1822,7 @@
dprintf("Not sending message to remote.\n");
else {
f->f_time = now;
- (void) snprintf(line, sizeof(line), "<%d>%s\n", f->f_prevpri, \
+ (void) snprintf(line, sizeof(line), "<%d>%s", f->f_prevpri, \
(char *) iov[4].iov_base);
l = strlen(line);
if (l > MAXLINE)
@@ -1815,7 +1866,7 @@
v->iov_len = 1;
}
again:
- /* f->f_file == -1 is an indicator that the we couldn't
+ /* f->f_file == -1 is an indicator that we couldn't
open the file at startup. */
if (f->f_file == -1)
break;
@@ -1852,7 +1903,7 @@
errno = e;
logerror(f->f_un.f_fname);
}
- } else if (f->f_flags & SYNC_FILE)
+ } else if (f->f_type == F_FILE && (f->f_flags & SYNC_FILE))
(void) fsync(f->f_file);
break;
@@ -1891,7 +1942,7 @@
register struct filed *f;
struct iovec *iov;
{
- char p[6 + UNAMESZ];
+ char p[sizeof (_PATH_DEV) + UNAMESZ];
register int i;
int ttyf, len;
static int reenter = 0;
@@ -1899,6 +1950,8 @@
struct utmp *uptr;
char greetings[200];
+ (void) &len;
+
if (reenter++)
return;
@@ -1913,7 +1966,6 @@
if (fork() == 0) {
(void) signal(SIGTERM, SIG_DFL);
(void) alarm(0);
- (void) signal(SIGALRM, endtty);
#ifndef SYSV
(void) signal(SIGTTOU, SIG_IGN);
(void) sigsetmask(0);
@@ -1929,7 +1981,7 @@
/* is this slot used? */
if (ut.ut_name[0] == '\0')
continue;
- if (ut.ut_type == LOGIN_PROCESS)
+ if (ut.ut_type != USER_PROCESS)
continue;
if (!(strcmp (ut.ut_name,"LOGIN"))) /* paranoia */
continue;
@@ -1959,6 +2011,7 @@
iov[1].iov_len = 0;
}
if (setjmp(ttybuf) == 0) {
+ (void) signal(SIGALRM, endtty);
(void) alarm(15);
/* open the terminal */
ttyf = open(p, O_WRONLY|O_NOCTTY);

View File

@@ -1,30 +0,0 @@
diff -Naur sysklogd-1.4.1.org/klogd.c sysklogd-1.4.1/klogd.c
--- sysklogd-1.4.1.org/klogd.c 2001-03-11 20:40:10.000000000 +0100
+++ sysklogd-1.4.1/klogd.c 2010-01-20 19:49:36.000000000 +0100
@@ -1171,10 +1171,24 @@
switch ( logsrc )
{
case kernel:
- LogKernelLine();
+ if (ksyslog(9, NULL, 0)>0)
+ {
+ LogKernelLine();
+ }
+ else
+ {
+ usleep(100000);
+ }
break;
case proc:
- LogProcLine();
+ if (ksyslog(9, NULL, 0)>0)
+ {
+ LogProcLine();
+ }
+ else
+ {
+ usleep(100000);
+ }
break;
case none:
pause();

View File

@@ -1,22 +0,0 @@
diff -r 6ab55f716ce3 tools/python/xen/util/pci.py
--- a/tools/python/xen/util/pci.py Thu Oct 09 17:18:11 2008 +0100
+++ b/tools/python/xen/util/pci.py Fri Oct 10 13:16:00 2008 +0800
@@ -696,6 +696,7 @@ class PciDevice:
def do_FLR(self):
""" Perform FLR (Functional Level Reset) for the device.
"""
+ return
if self.dev_type == DEV_TYPE_PCIe_ENDPOINT:
# If PCIe device supports FLR, we use it.
if self.pcie_flr:
diff -r 6ab55f716ce3 tools/python/xen/xend/server/pciif.py
--- a/tools/python/xen/xend/server/pciif.py Thu Oct 09 17:18:11 2008 +0100
+++ b/tools/python/xen/xend/server/pciif.py Fri Oct 10 13:18:25 2008 +0800
@@ -375,6 +375,7 @@ class PciController(DevController):
pci_dev_list = pci_dev_list + [(domain, bus, slot, func)]
for (domain, bus, slot, func) in pci_dev_list:
+ continue
try:
dev = PciDevice(domain, bus, slot, func)
except Exception, e:

View File

@@ -1,19 +0,0 @@
--- a/xen/arch/x86/platform_hypercall.c 2009-07-23 07:26:18.000000000 +0000
+++ b/xen/arch/x86/platform_hypercall.c 2009-07-23 07:28:30.000000000 +0000
@@ -313,7 +313,6 @@
{
uint32_t cpu;
uint64_t idletime, now = NOW();
- struct vcpu *v;
struct xenctl_cpumap ctlmap;
cpumask_t cpumap;
XEN_GUEST_HANDLE(uint8) cpumap_bitmap;
@@ -336,7 +335,7 @@
for_each_cpu_mask ( cpu, cpumap )
{
- if ( (v = idle_vcpu[cpu]) != NULL )
+ if ( !idle_vcpu[cpu] )
cpu_clear(cpu, cpumap);
idletime = get_cpu_idle_time(cpu);

View File

@@ -1,36 +0,0 @@
From: jbeulich@novell.com
Subject: also register pirq for DomU (which doesn't use the IO-APIC code)
References: bnc#463596
Patch-mainline: obsolete
Additionally make sure IRQ chip and handler aren't getting set twice
for an IRQ possibly in use by more than one device.
--- head-2009-02-02.orig/arch/x86/pci/pcifront.c 2009-02-03 17:27:59.000000000 +0100
+++ head-2009-02-02/arch/x86/pci/pcifront.c 2009-02-03 11:22:28.000000000 +0100
@@ -8,12 +8,14 @@
#include <linux/init.h>
#include <linux/pci.h>
#include <asm/acpi.h>
+#include <xen/evtchn.h>
#include "pci.h"
static int pcifront_enable_irq(struct pci_dev *dev)
{
u8 irq;
pci_read_config_byte(dev, PCI_INTERRUPT_LINE, &irq);
+ evtchn_register_pirq(irq);
dev->irq = irq;
return 0;
--- head-2009-02-02.orig/drivers/xen/core/evtchn.c 2009-01-14 15:16:43.000000000 +0100
+++ head-2009-02-02/drivers/xen/core/evtchn.c 2009-02-03 17:34:44.000000000 +0100
@@ -1561,7 +1561,7 @@ core_initcall(evtchn_register);
void evtchn_register_pirq(int irq)
{
BUG_ON(irq < PIRQ_BASE || irq - PIRQ_BASE > NR_PIRQS);
- if (identity_mapped_irq(irq))
+ if (identity_mapped_irq(irq) || type_from_irq(irq) != IRQT_UNBOUND)
return;
irq_info[irq] = mk_irq_info(IRQT_PIRQ, irq, 0);
set_irq_chip_and_handler_name(irq, &pirq_chip, handle_level_irq,

View File

@@ -1,99 +0,0 @@
--- a/tools/examples/xend-config.sxp 2009-05-18 11:05:38.000000000 +0000
+++ b/tools/examples/xend-config.sxp 2009-07-23 08:00:23.000000000 +0000
@@ -14,10 +14,6 @@
#(logfile /var/log/xen/xend.log)
#(loglevel DEBUG)
-# Uncomment the line below. Set the value to flask, acm, or dummy to
-# select a security module.
-
-#(xsm_module_name dummy)
# The Xen-API server configuration.
#
@@ -58,21 +54,20 @@
#(xend-http-server no)
-#(xend-unix-server no)
-#(xend-tcp-xmlrpc-server no)
-#(xend-unix-xmlrpc-server yes)
+(xend-unix-server yes)
+(xend-tcp-xmlrpc-server yes)
+(xend-unix-xmlrpc-server yes)
#(xend-relocation-server no)
(xend-relocation-server yes)
#(xend-relocation-ssl-server no)
-#(xend-udev-event-server no)
#(xend-unix-path /var/lib/xend/xend-socket)
# Address and port xend should use for the legacy TCP XMLRPC interface,
# if xend-tcp-xmlrpc-server is set.
-#(xend-tcp-xmlrpc-server-address 'localhost')
-#(xend-tcp-xmlrpc-server-port 8006)
+(xend-tcp-xmlrpc-server-address 'localhost')
+(xend-tcp-xmlrpc-server-port 8006)
# SSL key and certificate to use for the legacy TCP XMLRPC interface.
# Setting these will mean that this port serves only SSL connections as
@@ -82,11 +77,11 @@
# Port xend should use for the HTTP interface, if xend-http-server is set.
-#(xend-port 8000)
+(xend-port 8000)
# Port xend should use for the relocation interface, if xend-relocation-server
# is set.
-#(xend-relocation-port 8002)
+(xend-relocation-port 8002)
# Port xend should use for the ssl relocation interface, if
# xend-relocation-ssl-server is set.
@@ -154,7 +149,7 @@
# two fake interfaces per guest domain. To do things like this, write
# yourself a wrapper script, and call network-bridge from it, as appropriate.
#
-(network-script network-bridge)
+(network-script network-dummy)
# The script used to control virtual interfaces. This can be overridden on a
# per-vif basis when creating a domain or a configuring a new vif. The
@@ -169,7 +164,7 @@
# If you are using only one bridge, the vif-bridge script will discover that,
# so there is no need to specify it explicitly.
#
-(vif-script vif-bridge)
+#(vif-script vif-bridge)
## Use the following if network traffic is routed, as an alternative to the
@@ -194,7 +189,7 @@
# In SMP system, dom0 will use dom0-cpus # of CPUS
# If dom0-cpus = 0, dom0 will take all cpus available
-(dom0-cpus 0)
+#(dom0-cpus 0)
# Whether to enable core-dumps when domains crash.
#(enable-dump no)
@@ -205,7 +200,7 @@
# The interface for VNC servers to listen on. Defaults
# to 127.0.0.1 To restore old 'listen everywhere' behaviour
# set this to 0.0.0.0
-#(vnc-listen '127.0.0.1')
+(vnc-listen '0.0.0.0')
# The default password for VNC console on HVM domain.
# Empty string is no authentication.
@@ -243,7 +238,7 @@
# The default keymap to use for the VM's virtual keyboard
# when not specififed in VM's configuration
-#(keymap 'en-us')
+(keymap 'de')
# Script to run when the label of a resource has changed.
#(resource-label-change-script '')