Compare commits
119 commits
Author | SHA1 | Date | |
---|---|---|---|
|
a5ff768bab | ||
|
dd6a29e0ae | ||
|
27ed6f1e50 | ||
|
72586338be | ||
|
95594f8eea | ||
|
716c61709b | ||
|
52c9dd1aaa | ||
|
2d67eab1ec | ||
|
c65d6a9f76 | ||
|
f3635101c7 | ||
|
ced26e82ba | ||
|
f894b551d8 | ||
|
b7e986640a | ||
|
07b7459194 | ||
|
37f40d02b8 | ||
|
f920cc9f59 | ||
|
005ef6633a | ||
|
bb1f12ab78 | ||
|
d84d1822a4 | ||
|
2ef5b082ce | ||
|
ee4ba55e32 | ||
|
ecf9870ab7 | ||
|
1b98907582 | ||
|
91756021ca | ||
|
6fbaa37f32 | ||
|
111a6b1df4 | ||
|
62ddafbb15 | ||
|
70b79582bb | ||
|
6bc938b39f | ||
|
5eee92177f | ||
|
6851e7a67e | ||
|
8fba29d9f6 | ||
|
54be8dad10 | ||
|
905cea2ec2 | ||
|
c399bb6013 | ||
|
8702540baa | ||
|
088ab9a367 | ||
|
f0a53c28f0 | ||
|
90d6123188 | ||
|
ae5c14a774 | ||
|
f33a4041c9 | ||
|
4de0ca3e03 | ||
|
8dc3ecd08f | ||
|
0e1c878c32 | ||
|
db3993ec61 | ||
|
9fdf06f729 | ||
|
e377008057 | ||
|
1bc85bdb21 | ||
|
c884bbf46b | ||
|
20fee81e90 | ||
|
ce3849c053 | ||
|
c059f12958 | ||
|
35357aaef7 | ||
|
4fc1689eb4 | ||
|
9a288fb9c5 | ||
|
89674ac4c5 | ||
|
e9ede9f00d | ||
|
e2e683b9df | ||
|
51cbe6754a | ||
|
5736cb7c59 | ||
|
65b549d660 | ||
|
f39b95b09e | ||
|
bb4e8f7e0c | ||
|
5ef9ebae81 | ||
|
cc2b959905 | ||
|
ea86469ec5 | ||
|
1fe84f401e | ||
|
757d8d1f7f | ||
|
e283983dac | ||
|
eedb2673ad | ||
|
98a8bea6a9 | ||
|
e26c828073 | ||
|
3542104099 | ||
|
cb751699aa | ||
|
426b108b31 | ||
|
09540a9b47 | ||
|
84750f2cb8 | ||
|
0f95198b03 | ||
|
a7d042cf84 | ||
|
42b2f10cab | ||
|
e8de05f00a | ||
|
db4edca899 | ||
|
d86ac9ab89 | ||
|
bfb24763f1 | ||
|
f0e9d471b0 | ||
|
12e67fca18 | ||
|
1c1d2f02a5 | ||
|
b47b40fb05 | ||
|
1c7e5fca72 | ||
|
cc772d799a | ||
|
0e6f3cad55 | ||
|
269200fecc | ||
|
92f68f5c9c | ||
|
a2677867f0 | ||
|
58267f9baf | ||
|
62159ffc09 | ||
|
46a7e1e5c0 | ||
|
96a8393ab8 | ||
|
2ef1bfad23 | ||
|
aed7857cee | ||
|
f0bb800287 | ||
|
2a342cd5bf | ||
|
f33dd1483c | ||
|
e6f696f68e | ||
|
2a5520857a | ||
|
6108a76b16 | ||
|
23f36987b1 | ||
|
8885c6784c | ||
|
2d319d0063 | ||
|
7b56edaa63 | ||
|
d4ca5e50e6 | ||
|
82990d3282 | ||
|
6375e2a4aa | ||
|
863bc1e290 | ||
|
510a85e4b9 | ||
|
7c344688f5 | ||
|
97e01f895f | ||
|
538cc30e23 | ||
|
bdae15e056 |
107 changed files with 3434 additions and 1549 deletions
|
@ -8,6 +8,6 @@
|
||||||
# alphabetical order when updating the list.
|
# alphabetical order when updating the list.
|
||||||
|
|
||||||
Daniel Golle <daniel@makrotopia.org>
|
Daniel Golle <daniel@makrotopia.org>
|
||||||
Jiri Slachta <slachta@cesnet.cz>
|
Jiri Slachta <jiri@slachta.eu>
|
||||||
Luka Perkov <luka@openwrt.org>
|
Luka Perkov <luka@openwrt.org>
|
||||||
Mazi Lo <openwrt.mazilo@recursor.net>
|
Mazi Lo <openwrt.mazilo@recursor.net>
|
||||||
|
|
|
@ -9,12 +9,12 @@ include $(TOPDIR)/rules.mk
|
||||||
include $(INCLUDE_DIR)/kernel.mk
|
include $(INCLUDE_DIR)/kernel.mk
|
||||||
|
|
||||||
PKG_NAME:=dahdi-linux
|
PKG_NAME:=dahdi-linux
|
||||||
PKG_VERSION:=2.10.0.1
|
PKG_VERSION:=2.10.2
|
||||||
PKG_RELEASE:=1
|
PKG_RELEASE:=2
|
||||||
|
|
||||||
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
|
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
|
||||||
PKG_SOURCE_URL:=http://downloads.asterisk.org/pub/telephony/dahdi-linux/releases/
|
PKG_SOURCE_URL:=http://downloads.asterisk.org/pub/telephony/dahdi-linux/releases/
|
||||||
PKG_MD5SUM:=a23e91cc474f241616a5a038ae2b1e72
|
PKG_MD5SUM:=0281de245f4fa056f765ae2a6e1f1a4b
|
||||||
|
|
||||||
PKG_LICENSE:=GPL-2.0
|
PKG_LICENSE:=GPL-2.0
|
||||||
PKG_LICENSE_FILES:=LICENSE
|
PKG_LICENSE_FILES:=LICENSE
|
||||||
|
@ -43,7 +43,7 @@ define KernelPackage/dahdi-echocan-oslec
|
||||||
DEPENDS:=kmod-dahdi +kmod-echo
|
DEPENDS:=kmod-dahdi +kmod-echo
|
||||||
URL:=http://www.asterisk.org/
|
URL:=http://www.asterisk.org/
|
||||||
FILES:=$(PKG_BUILD_DIR)/drivers/dahdi/dahdi_echocan_oslec.$(LINUX_KMOD_SUFFIX)
|
FILES:=$(PKG_BUILD_DIR)/drivers/dahdi/dahdi_echocan_oslec.$(LINUX_KMOD_SUFFIX)
|
||||||
AUTOLOAD:=$(call AutoProbe,echo dahdi_echocan_oslec)
|
AUTOLOAD:=$(call AutoProbe,dahdi_echocan_oslec)
|
||||||
endef
|
endef
|
||||||
|
|
||||||
define KernelPackage/dahdi-echocan-oslec/description
|
define KernelPackage/dahdi-echocan-oslec/description
|
||||||
|
|
|
@ -1,7 +1,5 @@
|
||||||
Index: dahdi-linux-2.10.0.1/drivers/dahdi/oct612x/oct612x-user.c
|
--- a/drivers/dahdi/oct612x/oct612x-user.c
|
||||||
===================================================================
|
+++ b/drivers/dahdi/oct612x/oct612x-user.c
|
||||||
--- dahdi-linux-2.10.0.1.orig/drivers/dahdi/oct612x/oct612x-user.c
|
|
||||||
+++ dahdi-linux-2.10.0.1/drivers/dahdi/oct612x/oct612x-user.c
|
|
||||||
@@ -22,6 +22,7 @@
|
@@ -22,6 +22,7 @@
|
||||||
|
|
||||||
#include <linux/kernel.h>
|
#include <linux/kernel.h>
|
||||||
|
|
|
@ -1,89 +0,0 @@
|
||||||
Index: dahdi-linux-2.10.0.1/drivers/dahdi/wcaxx-base.c
|
|
||||||
===================================================================
|
|
||||||
--- dahdi-linux-2.10.0.1.orig/drivers/dahdi/wcaxx-base.c
|
|
||||||
+++ dahdi-linux-2.10.0.1/drivers/dahdi/wcaxx-base.c
|
|
||||||
@@ -3823,7 +3823,11 @@ static void wcaxx_back_out_gracefully(st
|
|
||||||
unsigned long flags;
|
|
||||||
|
|
||||||
clear_bit(INITIALIZED, &wc->bit_flags);
|
|
||||||
+#if (LINUX_VERSION_CODE < KERNEL_VERSION(3, 15, 0))
|
|
||||||
smp_mb__after_clear_bit();
|
|
||||||
+#else
|
|
||||||
+ smp_mb__after_atomic();
|
|
||||||
+#endif
|
|
||||||
|
|
||||||
/* Make sure we're not on the card list anymore. */
|
|
||||||
mutex_lock(&card_list_lock);
|
|
||||||
Index: dahdi-linux-2.10.0.1/drivers/dahdi/wcte12xp/base.c
|
|
||||||
===================================================================
|
|
||||||
--- dahdi-linux-2.10.0.1.orig/drivers/dahdi/wcte12xp/base.c
|
|
||||||
+++ dahdi-linux-2.10.0.1/drivers/dahdi/wcte12xp/base.c
|
|
||||||
@@ -2110,7 +2110,11 @@ static int t1xxp_set_linemode(struct dah
|
|
||||||
* them. */
|
|
||||||
clear_bit(INITIALIZED, &wc->bit_flags);
|
|
||||||
synchronize_irq(wc->vb.pdev->irq);
|
|
||||||
+#if (LINUX_VERSION_CODE < KERNEL_VERSION(3, 15, 0))
|
|
||||||
smp_mb__after_clear_bit();
|
|
||||||
+#else
|
|
||||||
+ smp_mb__after_atomic();
|
|
||||||
+#endif
|
|
||||||
del_timer_sync(&wc->timer);
|
|
||||||
flush_workqueue(wc->wq);
|
|
||||||
|
|
||||||
@@ -3076,7 +3080,11 @@ static void __devexit te12xp_remove_one(
|
|
||||||
remove_sysfs_files(wc);
|
|
||||||
|
|
||||||
clear_bit(INITIALIZED, &wc->bit_flags);
|
|
||||||
+#if (LINUX_VERSION_CODE < KERNEL_VERSION(3, 15, 0))
|
|
||||||
smp_mb__after_clear_bit();
|
|
||||||
+#else
|
|
||||||
+ smp_mb__after_atomic();
|
|
||||||
+#endif
|
|
||||||
|
|
||||||
del_timer_sync(&wc->timer);
|
|
||||||
flush_workqueue(wc->wq);
|
|
||||||
Index: dahdi-linux-2.10.0.1/drivers/dahdi/wcte13xp-base.c
|
|
||||||
===================================================================
|
|
||||||
--- dahdi-linux-2.10.0.1.orig/drivers/dahdi/wcte13xp-base.c
|
|
||||||
+++ dahdi-linux-2.10.0.1/drivers/dahdi/wcte13xp-base.c
|
|
||||||
@@ -1849,7 +1849,12 @@ static int t13x_set_linemode(struct dahd
|
|
||||||
clear_bit(INITIALIZED, &wc->bit_flags);
|
|
||||||
disable_irq(wc->xb.pdev->irq);
|
|
||||||
|
|
||||||
+#if (LINUX_VERSION_CODE < KERNEL_VERSION(3, 15, 0))
|
|
||||||
smp_mb__after_clear_bit();
|
|
||||||
+#else
|
|
||||||
+ smp_mb__after_atomic();
|
|
||||||
+#endif
|
|
||||||
+
|
|
||||||
del_timer_sync(&wc->timer);
|
|
||||||
flush_workqueue(wc->wq);
|
|
||||||
|
|
||||||
@@ -2725,7 +2730,11 @@ static void __devexit te13xp_remove_one(
|
|
||||||
return;
|
|
||||||
|
|
||||||
clear_bit(INITIALIZED, &wc->bit_flags);
|
|
||||||
+#if (LINUX_VERSION_CODE < KERNEL_VERSION(3, 15, 0))
|
|
||||||
smp_mb__after_clear_bit();
|
|
||||||
+#else
|
|
||||||
+ smp_mb__after_atomic();
|
|
||||||
+#endif
|
|
||||||
|
|
||||||
/* Quiesce DMA engine interrupts */
|
|
||||||
wcxb_stop(&wc->xb);
|
|
||||||
Index: dahdi-linux-2.10.0.1/drivers/dahdi/wcte43x-base.c
|
|
||||||
===================================================================
|
|
||||||
--- dahdi-linux-2.10.0.1.orig/drivers/dahdi/wcte43x-base.c
|
|
||||||
+++ dahdi-linux-2.10.0.1/drivers/dahdi/wcte43x-base.c
|
|
||||||
@@ -3581,7 +3581,11 @@ static void __devexit t43x_remove_one(st
|
|
||||||
return;
|
|
||||||
|
|
||||||
wc->not_ready = 1;
|
|
||||||
+#if (LINUX_VERSION_CODE < KERNEL_VERSION(3, 15, 0))
|
|
||||||
smp_mb__after_clear_bit();
|
|
||||||
+#else
|
|
||||||
+ smp_mb__after_atomic();
|
|
||||||
+#endif
|
|
||||||
|
|
||||||
/* Stop everything */
|
|
||||||
wcxb_stop(&wc->xb);
|
|
|
@ -1,7 +1,5 @@
|
||||||
Index: dahdi-linux-2.10.0.1/drivers/dahdi/Kbuild
|
--- a/drivers/dahdi/Kbuild
|
||||||
===================================================================
|
+++ b/drivers/dahdi/Kbuild
|
||||||
--- dahdi-linux-2.10.0.1.orig/drivers/dahdi/Kbuild
|
|
||||||
+++ dahdi-linux-2.10.0.1/drivers/dahdi/Kbuild
|
|
||||||
@@ -61,9 +61,8 @@ obj-m += $(DAHDI_MODULES_EXTRA)
|
@@ -61,9 +61,8 @@ obj-m += $(DAHDI_MODULES_EXTRA)
|
||||||
# If you want to build OSLEC, include the code in the standard location:
|
# If you want to build OSLEC, include the code in the standard location:
|
||||||
# drivers/staging/echo . The DAHDI OSLEC echo canceller will be built as
|
# drivers/staging/echo . The DAHDI OSLEC echo canceller will be built as
|
||||||
|
|
|
@ -1,35 +0,0 @@
|
||||||
From 4d86a8f3f690ee9bb9429e17cc03856c6c2dc760 Mon Sep 17 00:00:00 2001
|
|
||||||
From: Shaun Ruffell <sruffell@digium.com>
|
|
||||||
Date: Mon, 22 Dec 2014 11:21:28 -0600
|
|
||||||
Subject: [PATCH] dahdi: struct file.f_dentry macro was removed in kernel 3.19
|
|
||||||
|
|
||||||
This is necessary to build against kernel version 3.19 since commit
|
|
||||||
(78d28e651f97866d608d9b41 "kill f_dentry macro") [1]
|
|
||||||
|
|
||||||
[1] https://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/commit/?id=78d28e651
|
|
||||||
|
|
||||||
Signed-off-by: Shaun Ruffell <sruffell@digium.com>
|
|
||||||
Signed-off-by: Russ Meyerriecks <rmeyerriecks@digium.com>
|
|
||||||
---
|
|
||||||
drivers/dahdi/dahdi-base.c | 4 ++++
|
|
||||||
1 file changed, 4 insertions(+)
|
|
||||||
|
|
||||||
diff --git a/drivers/dahdi/dahdi-base.c b/drivers/dahdi/dahdi-base.c
|
|
||||||
index 0892734..f2caad0 100644
|
|
||||||
--- a/drivers/dahdi/dahdi-base.c
|
|
||||||
+++ b/drivers/dahdi/dahdi-base.c
|
|
||||||
@@ -98,7 +98,11 @@
|
|
||||||
#define chan_to_netdev(h) ((h)->hdlcnetdev->netdev)
|
|
||||||
|
|
||||||
/* macro-oni for determining a unit (channel) number */
|
|
||||||
+#if LINUX_VERSION_CODE < KERNEL_VERSION(2, 6, 20)
|
|
||||||
#define UNIT(file) MINOR(file->f_dentry->d_inode->i_rdev)
|
|
||||||
+#else
|
|
||||||
+#define UNIT(file) MINOR(file->f_path.dentry->d_inode->i_rdev)
|
|
||||||
+#endif
|
|
||||||
|
|
||||||
EXPORT_SYMBOL(dahdi_transcode_fops);
|
|
||||||
EXPORT_SYMBOL(dahdi_init_tone_state);
|
|
||||||
--
|
|
||||||
2.3.4
|
|
||||||
|
|
|
@ -1,45 +0,0 @@
|
||||||
From 1cc0ad510acd404e63923ed3062b9302d53580da Mon Sep 17 00:00:00 2001
|
|
||||||
From: Shaun Ruffell <sruffell@digium.com>
|
|
||||||
Date: Mon, 2 Mar 2015 09:00:13 -0600
|
|
||||||
Subject: [PATCH] dahdi: Fix "void value not ignored..." error when compiling
|
|
||||||
against kernel 4.0.
|
|
||||||
|
|
||||||
With commit (d1f1052c52 "device: Change dev_<level> logging functions to return
|
|
||||||
void") [1] in kernel version 4.0, DAHDI would fail to compile with the following
|
|
||||||
error:
|
|
||||||
|
|
||||||
.../drivers/dahdi/dahdi-base.c:7150:2: error: void value not ignored as it ought to be
|
|
||||||
dahdi_dev_dbg(ASSIGN, span_device(span),
|
|
||||||
^
|
|
||||||
|
|
||||||
Now ignore the dev_printk return value.
|
|
||||||
|
|
||||||
[1] https://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/commit/?id=d1f1052c5204524
|
|
||||||
|
|
||||||
Signed-off-by: Shaun Ruffell <sruffell@digium.com>
|
|
||||||
Acked-by: Tzafrir Cohen <tzafrir.cohen@xorcom.com>
|
|
||||||
---
|
|
||||||
include/dahdi/kernel.h | 6 ++++--
|
|
||||||
1 file changed, 4 insertions(+), 2 deletions(-)
|
|
||||||
|
|
||||||
diff --git a/include/dahdi/kernel.h b/include/dahdi/kernel.h
|
|
||||||
index 365801d..54c415e 100644
|
|
||||||
--- a/include/dahdi/kernel.h
|
|
||||||
+++ b/include/dahdi/kernel.h
|
|
||||||
@@ -1665,9 +1665,11 @@ struct mutex {
|
|
||||||
chan_printk(DEBUG, "-" #bits, chan, \
|
|
||||||
"%s: " fmt, __func__, ## __VA_ARGS__)))
|
|
||||||
#define dahdi_dev_dbg(bits, dev, fmt, ...) \
|
|
||||||
- ((void)((debug & (DAHDI_DBG_ ## bits)) && \
|
|
||||||
+ do { if (debug & (DAHDI_DBG_ ## bits)) { \
|
|
||||||
dev_printk(KERN_DEBUG, dev, \
|
|
||||||
- "DBG-%s(%s): " fmt, #bits, __func__, ## __VA_ARGS__)))
|
|
||||||
+ "DBG-%s(%s): " fmt, #bits, __func__, ## __VA_ARGS__); \
|
|
||||||
+ } } while (0)
|
|
||||||
+
|
|
||||||
#endif /* DAHDI_PRINK_MACROS_USE_debug */
|
|
||||||
|
|
||||||
#endif /* _DAHDI_KERNEL_H */
|
|
||||||
--
|
|
||||||
2.3.4
|
|
||||||
|
|
|
@ -1,56 +0,0 @@
|
||||||
From 1559db9d1ae03780788788c07334ca54cdd1253a Mon Sep 17 00:00:00 2001
|
|
||||||
From: Shaun Ruffell <sruffell@digium.com>
|
|
||||||
Date: Mon, 2 Mar 2015 09:00:14 -0600
|
|
||||||
Subject: [PATCH] dahdi: strnicmp() -> strncasecmp()
|
|
||||||
|
|
||||||
With commit (af3cd13501 "lib/string.c: remove strnicmp()") [1] dahdi can no
|
|
||||||
longer call strnicmp directly. strncasecmp was added into lib/string.c in kernel
|
|
||||||
version 2.6.22 so we'll map calls to strncasecmp to strnicmp for any kernel
|
|
||||||
before that.
|
|
||||||
|
|
||||||
This is necessary to compile against kernels >= 4.0.
|
|
||||||
|
|
||||||
[1] https://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/commit/?id=af3cd13501
|
|
||||||
|
|
||||||
Signed-off-by: Shaun Ruffell <sruffell@digium.com>
|
|
||||||
Acked-by: Tzafrir Cohen <tzafrir.cohen@xorcom.com>
|
|
||||||
---
|
|
||||||
drivers/dahdi/xpp/card_pri.c | 6 +++---
|
|
||||||
include/dahdi/kernel.h | 2 ++
|
|
||||||
2 files changed, 5 insertions(+), 3 deletions(-)
|
|
||||||
|
|
||||||
diff --git a/drivers/dahdi/xpp/card_pri.c b/drivers/dahdi/xpp/card_pri.c
|
|
||||||
index 29b457b..edc8bd2 100644
|
|
||||||
--- a/drivers/dahdi/xpp/card_pri.c
|
|
||||||
+++ b/drivers/dahdi/xpp/card_pri.c
|
|
||||||
@@ -2399,11 +2399,11 @@ static DEVICE_ATTR_WRITER(pri_protocol_store, dev, buf, count)
|
|
||||||
buf, i);
|
|
||||||
return -EINVAL;
|
|
||||||
}
|
|
||||||
- if (strnicmp(buf, "E1", 2) == 0)
|
|
||||||
+ if (strncasecmp(buf, "E1", 2) == 0)
|
|
||||||
new_protocol = PRI_PROTO_E1;
|
|
||||||
- else if (strnicmp(buf, "T1", 2) == 0)
|
|
||||||
+ else if (strncasecmp(buf, "T1", 2) == 0)
|
|
||||||
new_protocol = PRI_PROTO_T1;
|
|
||||||
- else if (strnicmp(buf, "J1", 2) == 0)
|
|
||||||
+ else if (strncasecmp(buf, "J1", 2) == 0)
|
|
||||||
new_protocol = PRI_PROTO_J1;
|
|
||||||
else {
|
|
||||||
XPD_NOTICE(xpd,
|
|
||||||
diff --git a/include/dahdi/kernel.h b/include/dahdi/kernel.h
|
|
||||||
index 54c415e..90d48a3 100644
|
|
||||||
--- a/include/dahdi/kernel.h
|
|
||||||
+++ b/include/dahdi/kernel.h
|
|
||||||
@@ -1502,6 +1502,8 @@ void dahdi_pci_disable_link_state(struct pci_dev *pdev, int state);
|
|
||||||
#define list_first_entry(ptr, type, member) \
|
|
||||||
list_entry((ptr)->next, type, member)
|
|
||||||
|
|
||||||
+#define strncasecmp strnicmp
|
|
||||||
+
|
|
||||||
#ifndef __packed
|
|
||||||
#define __packed __attribute__((packed))
|
|
||||||
#endif
|
|
||||||
--
|
|
||||||
2.3.4
|
|
||||||
|
|
|
@ -1,7 +1,5 @@
|
||||||
Index: dahdi-linux-2.10.0.1/drivers/dahdi/Kbuild
|
--- a/drivers/dahdi/Kbuild
|
||||||
===================================================================
|
+++ b/drivers/dahdi/Kbuild
|
||||||
--- dahdi-linux-2.10.0.1.orig/drivers/dahdi/Kbuild
|
|
||||||
+++ dahdi-linux-2.10.0.1/drivers/dahdi/Kbuild
|
|
||||||
@@ -1,5 +1,5 @@
|
@@ -1,5 +1,5 @@
|
||||||
obj-$(DAHDI_BUILD_ALL)$(CONFIG_DAHDI) += dahdi.o
|
obj-$(DAHDI_BUILD_ALL)$(CONFIG_DAHDI) += dahdi.o
|
||||||
-#obj-$(DAHDI_BUILD_ALL)$(CONFIG_DAHDI_DUMMY) += dahdi_dummy.o
|
-#obj-$(DAHDI_BUILD_ALL)$(CONFIG_DAHDI_DUMMY) += dahdi_dummy.o
|
||||||
|
|
17
libs/dahdi-linux/patches/070-no-firmware-blob-download.patch
Normal file
17
libs/dahdi-linux/patches/070-no-firmware-blob-download.patch
Normal file
|
@ -0,0 +1,17 @@
|
||||||
|
--- a/Makefile
|
||||||
|
+++ b/Makefile
|
||||||
|
@@ -80,12 +80,12 @@ include/dahdi/version.h: FORCE
|
||||||
|
fi
|
||||||
|
@rm -f $@.tmp
|
||||||
|
|
||||||
|
-prereq: include/dahdi/version.h firmware-loaders
|
||||||
|
+prereq: include/dahdi/version.h
|
||||||
|
|
||||||
|
stackcheck: $(CHECKSTACK) modules
|
||||||
|
objdump -d drivers/dahdi/*.ko drivers/dahdi/*/*.ko | $(CHECKSTACK)
|
||||||
|
|
||||||
|
-install: all install-modules install-include install-firmware install-xpp-firm
|
||||||
|
+install: all install-modules install-include
|
||||||
|
@echo "###################################################"
|
||||||
|
@echo "###"
|
||||||
|
@echo "### DAHDI installed successfully."
|
|
@ -1,7 +1,5 @@
|
||||||
Index: dahdi-linux-2.10.0.1/drivers/dahdi/Kbuild
|
--- a/drivers/dahdi/Kbuild
|
||||||
===================================================================
|
+++ b/drivers/dahdi/Kbuild
|
||||||
--- dahdi-linux-2.10.0.1.orig/drivers/dahdi/Kbuild
|
|
||||||
+++ dahdi-linux-2.10.0.1/drivers/dahdi/Kbuild
|
|
||||||
@@ -13,6 +13,7 @@ obj-$(DAHDI_BUILD_ALL)$(CONFIG_DAHDI_WCT
|
@@ -13,6 +13,7 @@ obj-$(DAHDI_BUILD_ALL)$(CONFIG_DAHDI_WCT
|
||||||
obj-$(DAHDI_BUILD_ALL)$(CONFIG_DAHDI_WCTDM24XXP) += wctdm24xxp/
|
obj-$(DAHDI_BUILD_ALL)$(CONFIG_DAHDI_WCTDM24XXP) += wctdm24xxp/
|
||||||
obj-$(DAHDI_BUILD_ALL)$(CONFIG_DAHDI_WCTE12XP) += wcte12xp/
|
obj-$(DAHDI_BUILD_ALL)$(CONFIG_DAHDI_WCTE12XP) += wcte12xp/
|
||||||
|
@ -10,10 +8,8 @@ Index: dahdi-linux-2.10.0.1/drivers/dahdi/Kbuild
|
||||||
|
|
||||||
wcte13xp-objs := wcte13xp-base.o wcxb_spi.o wcxb.o wcxb_flash.o
|
wcte13xp-objs := wcte13xp-base.o wcxb_spi.o wcxb.o wcxb_flash.o
|
||||||
CFLAGS_wcte13xp-base.o += -I$(src)/oct612x -I$(src)/oct612x/include -I$(src)/oct612x/octdeviceapi -I$(src)/oct612x/octdeviceapi/oct6100api
|
CFLAGS_wcte13xp-base.o += -I$(src)/oct612x -I$(src)/oct612x/include -I$(src)/oct612x/octdeviceapi -I$(src)/oct612x/octdeviceapi/oct6100api
|
||||||
Index: dahdi-linux-2.10.0.1/drivers/dahdi/Kconfig
|
--- a/drivers/dahdi/Kconfig
|
||||||
===================================================================
|
+++ b/drivers/dahdi/Kconfig
|
||||||
--- dahdi-linux-2.10.0.1.orig/drivers/dahdi/Kconfig
|
|
||||||
+++ dahdi-linux-2.10.0.1/drivers/dahdi/Kconfig
|
|
||||||
@@ -291,4 +291,14 @@ config DAHDI_WCTE11XP
|
@@ -291,4 +291,14 @@ config DAHDI_WCTE11XP
|
||||||
|
|
||||||
If unsure, say Y.
|
If unsure, say Y.
|
||||||
|
@ -29,10 +25,8 @@ Index: dahdi-linux-2.10.0.1/drivers/dahdi/Kconfig
|
||||||
+ If unsure, say Y.
|
+ If unsure, say Y.
|
||||||
+
|
+
|
||||||
source "drivers/dahdi/xpp/Kconfig"
|
source "drivers/dahdi/xpp/Kconfig"
|
||||||
Index: dahdi-linux-2.10.0.1/drivers/dahdi/hfcs/base.c
|
|
||||||
===================================================================
|
|
||||||
--- /dev/null
|
--- /dev/null
|
||||||
+++ dahdi-linux-2.10.0.1/drivers/dahdi/hfcs/base.c
|
+++ b/drivers/dahdi/hfcs/base.c
|
||||||
@@ -0,0 +1,1742 @@
|
@@ -0,0 +1,1742 @@
|
||||||
+/*
|
+/*
|
||||||
+ * dahdi_hfcs.c - Dahdi driver for HFC-S PCI A based ISDN BRI cards
|
+ * dahdi_hfcs.c - Dahdi driver for HFC-S PCI A based ISDN BRI cards
|
||||||
|
@ -1776,10 +1770,8 @@ Index: dahdi-linux-2.10.0.1/drivers/dahdi/hfcs/base.c
|
||||||
+#ifdef DEBUG
|
+#ifdef DEBUG
|
||||||
+MODULE_PARM_DESC(debug_level, "Debug verbosity level");
|
+MODULE_PARM_DESC(debug_level, "Debug verbosity level");
|
||||||
+#endif
|
+#endif
|
||||||
Index: dahdi-linux-2.10.0.1/drivers/dahdi/hfcs/dahdi_hfcs.h
|
|
||||||
===================================================================
|
|
||||||
--- /dev/null
|
--- /dev/null
|
||||||
+++ dahdi-linux-2.10.0.1/drivers/dahdi/hfcs/dahdi_hfcs.h
|
+++ b/drivers/dahdi/hfcs/dahdi_hfcs.h
|
||||||
@@ -0,0 +1,419 @@
|
@@ -0,0 +1,419 @@
|
||||||
+/*
|
+/*
|
||||||
+ * dahdi_hfcs.h - Dahdi driver for HFC-S PCI A based ISDN BRI cards
|
+ * dahdi_hfcs.h - Dahdi driver for HFC-S PCI A based ISDN BRI cards
|
||||||
|
@ -2200,10 +2192,8 @@ Index: dahdi-linux-2.10.0.1/drivers/dahdi/hfcs/dahdi_hfcs.h
|
||||||
+}
|
+}
|
||||||
+
|
+
|
||||||
+#endif
|
+#endif
|
||||||
Index: dahdi-linux-2.10.0.1/drivers/dahdi/hfcs/fifo.c
|
|
||||||
===================================================================
|
|
||||||
--- /dev/null
|
--- /dev/null
|
||||||
+++ dahdi-linux-2.10.0.1/drivers/dahdi/hfcs/fifo.c
|
+++ b/drivers/dahdi/hfcs/fifo.c
|
||||||
@@ -0,0 +1,380 @@
|
@@ -0,0 +1,380 @@
|
||||||
+/*
|
+/*
|
||||||
+ * fifo.c - HFC FIFO management routines
|
+ * fifo.c - HFC FIFO management routines
|
||||||
|
@ -2585,10 +2575,8 @@ Index: dahdi-linux-2.10.0.1/drivers/dahdi/hfcs/fifo.c
|
||||||
+ }
|
+ }
|
||||||
+}
|
+}
|
||||||
+
|
+
|
||||||
Index: dahdi-linux-2.10.0.1/drivers/dahdi/hfcs/fifo.h
|
|
||||||
===================================================================
|
|
||||||
--- /dev/null
|
--- /dev/null
|
||||||
+++ dahdi-linux-2.10.0.1/drivers/dahdi/hfcs/fifo.h
|
+++ b/drivers/dahdi/hfcs/fifo.h
|
||||||
@@ -0,0 +1,139 @@
|
@@ -0,0 +1,139 @@
|
||||||
+/*
|
+/*
|
||||||
+ * fifo.h - Dahdi driver for HFC-S PCI A based ISDN BRI cards
|
+ * fifo.h - Dahdi driver for HFC-S PCI A based ISDN BRI cards
|
||||||
|
@ -2729,10 +2717,8 @@ Index: dahdi-linux-2.10.0.1/drivers/dahdi/hfcs/fifo.h
|
||||||
+void hfc_clear_fifo_tx(struct hfc_chan_simplex *chan);
|
+void hfc_clear_fifo_tx(struct hfc_chan_simplex *chan);
|
||||||
+
|
+
|
||||||
+#endif
|
+#endif
|
||||||
Index: dahdi-linux-2.10.0.1/drivers/dahdi/hfcs/Kbuild
|
|
||||||
===================================================================
|
|
||||||
--- /dev/null
|
--- /dev/null
|
||||||
+++ dahdi-linux-2.10.0.1/drivers/dahdi/hfcs/Kbuild
|
+++ b/drivers/dahdi/hfcs/Kbuild
|
||||||
@@ -0,0 +1,10 @@
|
@@ -0,0 +1,10 @@
|
||||||
+obj-m += dahdi_hfcs.o
|
+obj-m += dahdi_hfcs.o
|
||||||
+
|
+
|
||||||
|
|
|
@ -8,12 +8,12 @@
|
||||||
include $(TOPDIR)/rules.mk
|
include $(TOPDIR)/rules.mk
|
||||||
|
|
||||||
PKG_NAME:=dahdi-tools
|
PKG_NAME:=dahdi-tools
|
||||||
PKG_VERSION:=2.10.0.1
|
PKG_VERSION:=2.10.2
|
||||||
PKG_RELEASE:=1
|
PKG_RELEASE:=1
|
||||||
|
|
||||||
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
|
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
|
||||||
PKG_SOURCE_URL:=http://downloads.asterisk.org/pub/telephony/dahdi-tools/releases/
|
PKG_SOURCE_URL:=http://downloads.asterisk.org/pub/telephony/dahdi-tools/releases/
|
||||||
PKG_MD5SUM:=224c5b86195249d5ce462ca316332087
|
PKG_MD5SUM:=6928cdf6f7710299ecbcacbac20d5c92
|
||||||
|
|
||||||
PKG_LICENSE:=GPL-2.0
|
PKG_LICENSE:=GPL-2.0
|
||||||
PKG_LICENSE_FILES:=LICENSE
|
PKG_LICENSE_FILES:=LICENSE
|
||||||
|
|
|
@ -9,7 +9,7 @@ include $(TOPDIR)/rules.mk
|
||||||
|
|
||||||
PKG_NAME:=iksemel
|
PKG_NAME:=iksemel
|
||||||
PKG_VERSION:=1.4
|
PKG_VERSION:=1.4
|
||||||
PKG_RELEASE:=1
|
PKG_RELEASE:=2
|
||||||
|
|
||||||
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
|
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
|
||||||
PKG_SOURCE_URL:=http://iksemel.googlecode.com/files/
|
PKG_SOURCE_URL:=http://iksemel.googlecode.com/files/
|
||||||
|
@ -21,7 +21,7 @@ PKG_INSTALL:=1
|
||||||
|
|
||||||
PKG_LICENSE:=LGPL-2.1
|
PKG_LICENSE:=LGPL-2.1
|
||||||
PKG_LICENSE_FILES:=COPYING
|
PKG_LICENSE_FILES:=COPYING
|
||||||
PKG_MAINTAINER:=Jiri Slachta <slachta@cesnet.cz>
|
PKG_MAINTAINER:=Jiri Slachta <jiri@slachta.eu>
|
||||||
|
|
||||||
include $(INCLUDE_DIR)/package.mk
|
include $(INCLUDE_DIR)/package.mk
|
||||||
|
|
||||||
|
@ -31,7 +31,7 @@ define Package/libiksemel
|
||||||
CATEGORY:=Libraries
|
CATEGORY:=Libraries
|
||||||
TITLE:=Iksemel Jabber Library
|
TITLE:=Iksemel Jabber Library
|
||||||
URL:=http://code.google.com/p/iksemel/
|
URL:=http://code.google.com/p/iksemel/
|
||||||
DEPENDS:= +libgnutls +libtasn1 +libgcrypt +libgpg-error @BROKEN
|
DEPENDS:=+libgnutls
|
||||||
endef
|
endef
|
||||||
|
|
||||||
define Package/libiksemel/description
|
define Package/libiksemel/description
|
||||||
|
@ -41,21 +41,6 @@ in ANSI C except the network code (which is POSIX compatible), thus
|
||||||
highly portable.
|
highly portable.
|
||||||
endef
|
endef
|
||||||
|
|
||||||
TARGET_CFLAGS += $(FPIC)
|
|
||||||
TARGET_LDFLAGS += \
|
|
||||||
-Wl,-rpath-link,$(STAGING_DIR)/usr/lib \
|
|
||||||
-lgnutls -lgcrypt -lgpg-error
|
|
||||||
|
|
||||||
define Build/Configure
|
|
||||||
$(call Build/Configure/Default, \
|
|
||||||
--enable-shared \
|
|
||||||
--enable-static \
|
|
||||||
--with-libgnutls-prefix="$(STAGING_DIR)/usr" \
|
|
||||||
, \
|
|
||||||
LIBS="$(TARGET_LDFLAGS)" \
|
|
||||||
)
|
|
||||||
endef
|
|
||||||
|
|
||||||
define Build/InstallDev
|
define Build/InstallDev
|
||||||
$(INSTALL_DIR) $(1)/usr/include/
|
$(INSTALL_DIR) $(1)/usr/include/
|
||||||
$(CP) $(PKG_INSTALL_DIR)/usr/include/iksemel.h $(1)/usr/include/
|
$(CP) $(PKG_INSTALL_DIR)/usr/include/iksemel.h $(1)/usr/include/
|
||||||
|
|
|
@ -1,163 +0,0 @@
|
||||||
--- /dev/null
|
|
||||||
+++ b/gnutls.m4
|
|
||||||
@@ -0,0 +1,160 @@
|
|
||||||
+dnl Autoconf macros for libgnutls
|
|
||||||
+dnl $id$
|
|
||||||
+
|
|
||||||
+# Modified for LIBGNUTLS -- nmav
|
|
||||||
+# Configure paths for LIBGCRYPT
|
|
||||||
+# Shamelessly stolen from the one of XDELTA by Owen Taylor
|
|
||||||
+# Werner Koch 99-12-09
|
|
||||||
+
|
|
||||||
+dnl AM_PATH_LIBGNUTLS([MINIMUM-VERSION, [ACTION-IF-FOUND [, ACTION-IF-NOT-FOUND ]]])
|
|
||||||
+dnl Test for libgnutls, and define LIBGNUTLS_CFLAGS and LIBGNUTLS_LIBS
|
|
||||||
+dnl
|
|
||||||
+AC_DEFUN([AM_PATH_LIBGNUTLS],
|
|
||||||
+[dnl
|
|
||||||
+dnl Get the cflags and libraries from the libgnutls-config script
|
|
||||||
+dnl
|
|
||||||
+AC_ARG_WITH(libgnutls-prefix,
|
|
||||||
+ [ --with-libgnutls-prefix=PFX Prefix where libgnutls is installed (optional)],
|
|
||||||
+ libgnutls_config_prefix="$withval", libgnutls_config_prefix="")
|
|
||||||
+
|
|
||||||
+ if test x$libgnutls_config_prefix != x ; then
|
|
||||||
+ if test x${LIBGNUTLS_CONFIG+set} != xset ; then
|
|
||||||
+ LIBGNUTLS_CONFIG=$libgnutls_config_prefix/bin/libgnutls-config
|
|
||||||
+ fi
|
|
||||||
+ fi
|
|
||||||
+
|
|
||||||
+ AC_PATH_PROG(LIBGNUTLS_CONFIG, libgnutls-config, no)
|
|
||||||
+ min_libgnutls_version=ifelse([$1], ,0.1.0,$1)
|
|
||||||
+ AC_MSG_CHECKING(for libgnutls - version >= $min_libgnutls_version)
|
|
||||||
+ no_libgnutls=""
|
|
||||||
+ if test "$LIBGNUTLS_CONFIG" = "no" ; then
|
|
||||||
+ no_libgnutls=yes
|
|
||||||
+ else
|
|
||||||
+ LIBGNUTLS_CFLAGS=`$LIBGNUTLS_CONFIG $libgnutls_config_args --cflags`
|
|
||||||
+ LIBGNUTLS_LIBS=`$LIBGNUTLS_CONFIG $libgnutls_config_args --libs`
|
|
||||||
+ libgnutls_config_version=`$LIBGNUTLS_CONFIG $libgnutls_config_args --version`
|
|
||||||
+
|
|
||||||
+
|
|
||||||
+ ac_save_CFLAGS="$CFLAGS"
|
|
||||||
+ ac_save_LIBS="$LIBS"
|
|
||||||
+ CFLAGS="$CFLAGS $LIBGNUTLS_CFLAGS"
|
|
||||||
+ LIBS="$LIBS $LIBGNUTLS_LIBS"
|
|
||||||
+dnl
|
|
||||||
+dnl Now check if the installed libgnutls is sufficiently new. Also sanity
|
|
||||||
+dnl checks the results of libgnutls-config to some extent
|
|
||||||
+dnl
|
|
||||||
+ rm -f conf.libgnutlstest
|
|
||||||
+ AC_TRY_RUN([
|
|
||||||
+#include <stdio.h>
|
|
||||||
+#include <stdlib.h>
|
|
||||||
+#include <string.h>
|
|
||||||
+#include <gnutls/gnutls.h>
|
|
||||||
+
|
|
||||||
+int
|
|
||||||
+main ()
|
|
||||||
+{
|
|
||||||
+ system ("touch conf.libgnutlstest");
|
|
||||||
+
|
|
||||||
+ if( strcmp( gnutls_check_version(NULL), "$libgnutls_config_version" ) )
|
|
||||||
+ {
|
|
||||||
+ printf("\n*** 'libgnutls-config --version' returned %s, but LIBGNUTLS (%s)\n",
|
|
||||||
+ "$libgnutls_config_version", gnutls_check_version(NULL) );
|
|
||||||
+ printf("*** was found! If libgnutls-config was correct, then it is best\n");
|
|
||||||
+ printf("*** to remove the old version of LIBGNUTLS. You may also be able to fix the error\n");
|
|
||||||
+ printf("*** by modifying your LD_LIBRARY_PATH enviroment variable, or by editing\n");
|
|
||||||
+ printf("*** /etc/ld.so.conf. Make sure you have run ldconfig if that is\n");
|
|
||||||
+ printf("*** required on your system.\n");
|
|
||||||
+ printf("*** If libgnutls-config was wrong, set the environment variable LIBGNUTLS_CONFIG\n");
|
|
||||||
+ printf("*** to point to the correct copy of libgnutls-config, and remove the file config.cache\n");
|
|
||||||
+ printf("*** before re-running configure\n");
|
|
||||||
+ }
|
|
||||||
+ else if ( strcmp(gnutls_check_version(NULL), LIBGNUTLS_VERSION ) )
|
|
||||||
+ {
|
|
||||||
+ printf("\n*** LIBGNUTLS header file (version %s) does not match\n", LIBGNUTLS_VERSION);
|
|
||||||
+ printf("*** library (version %s)\n", gnutls_check_version(NULL) );
|
|
||||||
+ }
|
|
||||||
+ else
|
|
||||||
+ {
|
|
||||||
+ if ( gnutls_check_version( "$min_libgnutls_version" ) )
|
|
||||||
+ {
|
|
||||||
+ return 0;
|
|
||||||
+ }
|
|
||||||
+ else
|
|
||||||
+ {
|
|
||||||
+ printf("no\n*** An old version of LIBGNUTLS (%s) was found.\n",
|
|
||||||
+ gnutls_check_version(NULL) );
|
|
||||||
+ printf("*** You need a version of LIBGNUTLS newer than %s. The latest version of\n",
|
|
||||||
+ "$min_libgnutls_version" );
|
|
||||||
+ printf("*** LIBGNUTLS is always available from ftp://gnutls.hellug.gr/pub/gnutls.\n");
|
|
||||||
+ printf("*** \n");
|
|
||||||
+ printf("*** If you have already installed a sufficiently new version, this error\n");
|
|
||||||
+ printf("*** probably means that the wrong copy of the libgnutls-config shell script is\n");
|
|
||||||
+ printf("*** being found. The easiest way to fix this is to remove the old version\n");
|
|
||||||
+ printf("*** of LIBGNUTLS, but you can also set the LIBGNUTLS_CONFIG environment to point to the\n");
|
|
||||||
+ printf("*** correct copy of libgnutls-config. (In this case, you will have to\n");
|
|
||||||
+ printf("*** modify your LD_LIBRARY_PATH enviroment variable, or edit /etc/ld.so.conf\n");
|
|
||||||
+ printf("*** so that the correct libraries are found at run-time))\n");
|
|
||||||
+ }
|
|
||||||
+ }
|
|
||||||
+ return 1;
|
|
||||||
+}
|
|
||||||
+],, no_libgnutls=yes,[echo $ac_n "cross compiling; assumed OK... $ac_c"])
|
|
||||||
+ CFLAGS="$ac_save_CFLAGS"
|
|
||||||
+ LIBS="$ac_save_LIBS"
|
|
||||||
+ fi
|
|
||||||
+
|
|
||||||
+ if test "x$no_libgnutls" = x ; then
|
|
||||||
+ AC_MSG_RESULT(yes)
|
|
||||||
+ ifelse([$2], , :, [$2])
|
|
||||||
+ else
|
|
||||||
+ if test -f conf.libgnutlstest ; then
|
|
||||||
+ :
|
|
||||||
+ else
|
|
||||||
+ AC_MSG_RESULT(no)
|
|
||||||
+ fi
|
|
||||||
+ if test "$LIBGNUTLS_CONFIG" = "no" ; then
|
|
||||||
+ echo "*** The libgnutls-config script installed by LIBGNUTLS could not be found"
|
|
||||||
+ echo "*** If LIBGNUTLS was installed in PREFIX, make sure PREFIX/bin is in"
|
|
||||||
+ echo "*** your path, or set the LIBGNUTLS_CONFIG environment variable to the"
|
|
||||||
+ echo "*** full path to libgnutls-config."
|
|
||||||
+ else
|
|
||||||
+ if test -f conf.libgnutlstest ; then
|
|
||||||
+ :
|
|
||||||
+ else
|
|
||||||
+ echo "*** Could not run libgnutls test program, checking why..."
|
|
||||||
+ CFLAGS="$CFLAGS $LIBGNUTLS_CFLAGS"
|
|
||||||
+ LIBS="$LIBS $LIBGNUTLS_LIBS"
|
|
||||||
+ AC_TRY_LINK([
|
|
||||||
+#include <stdio.h>
|
|
||||||
+#include <stdlib.h>
|
|
||||||
+#include <string.h>
|
|
||||||
+#include <gnutls/gnutls.h>
|
|
||||||
+], [ return !!gnutls_check_version(NULL); ],
|
|
||||||
+ [ echo "*** The test program compiled, but did not run. This usually means"
|
|
||||||
+ echo "*** that the run-time linker is not finding LIBGNUTLS or finding the wrong"
|
|
||||||
+ echo "*** version of LIBGNUTLS. If it is not finding LIBGNUTLS, you'll need to set your"
|
|
||||||
+ echo "*** LD_LIBRARY_PATH environment variable, or edit /etc/ld.so.conf to point"
|
|
||||||
+ echo "*** to the installed location Also, make sure you have run ldconfig if that"
|
|
||||||
+ echo "*** is required on your system"
|
|
||||||
+ echo "***"
|
|
||||||
+ echo "*** If you have an old version installed, it is best to remove it, although"
|
|
||||||
+ echo "*** you may also be able to get things to work by modifying LD_LIBRARY_PATH"
|
|
||||||
+ echo "***" ],
|
|
||||||
+ [ echo "*** The test program failed to compile or link. See the file config.log for the"
|
|
||||||
+ echo "*** exact error that occured. This usually means LIBGNUTLS was incorrectly installed"
|
|
||||||
+ echo "*** or that you have moved LIBGNUTLS since it was installed. In the latter case, you"
|
|
||||||
+ echo "*** may want to edit the libgnutls-config script: $LIBGNUTLS_CONFIG" ])
|
|
||||||
+ CFLAGS="$ac_save_CFLAGS"
|
|
||||||
+ LIBS="$ac_save_LIBS"
|
|
||||||
+ fi
|
|
||||||
+ fi
|
|
||||||
+ LIBGNUTLS_CFLAGS=""
|
|
||||||
+ LIBGNUTLS_LIBS=""
|
|
||||||
+ ifelse([$3], , :, [$3])
|
|
||||||
+ fi
|
|
||||||
+ rm -f conf.libgnutlstest
|
|
||||||
+ AC_SUBST(LIBGNUTLS_CFLAGS)
|
|
||||||
+ AC_SUBST(LIBGNUTLS_LIBS)
|
|
||||||
+])
|
|
||||||
+
|
|
||||||
+dnl *-*wedit:notab*-* Please keep this as the last line.
|
|
28
libs/iksemel/patches/001-pkgconfig-gnutls.patch
Normal file
28
libs/iksemel/patches/001-pkgconfig-gnutls.patch
Normal file
|
@ -0,0 +1,28 @@
|
||||||
|
Last-Update: 2013-07-29
|
||||||
|
Forwarded: not-needed
|
||||||
|
Origin: upstream, commit:4652af9cf119145af3a90c632f8a6db215946784
|
||||||
|
Bug-Iksemel: https://code.google.com/p/iksemel/issues/detail?id=20
|
||||||
|
Author: Dmitry Smirnov <onlyjob@member.fsf.org>
|
||||||
|
Description: use pkgconfig for checking gnutls
|
||||||
|
|
||||||
|
--- a/configure.ac
|
||||||
|
+++ b/configure.ac
|
||||||
|
@@ -44,9 +44,17 @@
|
||||||
|
AC_SEARCH_LIBS(recv,socket)
|
||||||
|
AC_CHECK_FUNCS(getopt_long)
|
||||||
|
AC_CHECK_FUNCS(getaddrinfo)
|
||||||
|
|
||||||
|
-AM_PATH_LIBGNUTLS(,AC_DEFINE(HAVE_GNUTLS,,"Use libgnutls"))
|
||||||
|
+dnl Check GNU TLS
|
||||||
|
+PKG_CHECK_MODULES(GNUTLS, gnutls >= 2.0.0, have_gnutls=yes, have_gnutls=no)
|
||||||
|
+if test "x$have_gnutls" = "xyes"; then
|
||||||
|
+ LIBGNUTLS_CFLAGS="$GNUTLS_CFLAGS"
|
||||||
|
+ LIBGNUTLS_LIBS="$GNUTLS_LIBS"
|
||||||
|
+ AC_SUBST(LIBGNUTLS_CFLAGS)
|
||||||
|
+ AC_SUBST(LIBGNUTLS_LIBS)
|
||||||
|
+ AC_DEFINE(HAVE_GNUTLS, 1, [whether to use GnuTSL support.])
|
||||||
|
+fi
|
||||||
|
|
||||||
|
dnl Check -Wall flag of GCC
|
||||||
|
if test "x$GCC" = "xyes"; then
|
||||||
|
if test -z "`echo "$CFLAGS" | grep "\-Wall" 2> /dev/null`" ; then
|
38
libs/iksemel/patches/002-secure_gnutls_options.patch
Normal file
38
libs/iksemel/patches/002-secure_gnutls_options.patch
Normal file
|
@ -0,0 +1,38 @@
|
||||||
|
Last-Update: 2015-10-28
|
||||||
|
Bug-Upstream: https://github.com/meduketto/iksemel/issues/48
|
||||||
|
Bug-Debian: https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=803204
|
||||||
|
From: Marc Dequènes (duck) <duck@duckcorp.org>
|
||||||
|
Description: fix security problem (and compatibility problem with servers rejecting low grade ciphers).
|
||||||
|
|
||||||
|
--- a/src/stream.c
|
||||||
|
+++ b/src/stream.c
|
||||||
|
@@ -62,13 +62,9 @@
|
||||||
|
|
||||||
|
static int
|
||||||
|
handshake (struct stream_data *data)
|
||||||
|
{
|
||||||
|
- const int protocol_priority[] = { GNUTLS_TLS1, GNUTLS_SSL3, 0 };
|
||||||
|
- const int kx_priority[] = { GNUTLS_KX_RSA, 0 };
|
||||||
|
- const int cipher_priority[] = { GNUTLS_CIPHER_3DES_CBC, GNUTLS_CIPHER_ARCFOUR, 0};
|
||||||
|
- const int comp_priority[] = { GNUTLS_COMP_ZLIB, GNUTLS_COMP_NULL, 0 };
|
||||||
|
- const int mac_priority[] = { GNUTLS_MAC_SHA, GNUTLS_MAC_MD5, 0 };
|
||||||
|
+ const char *priority_string = "SECURE256:+SECURE192:-VERS-TLS-ALL:+VERS-TLS1.2";
|
||||||
|
int ret;
|
||||||
|
|
||||||
|
if (gnutls_global_init () != 0)
|
||||||
|
return IKS_NOMEM;
|
||||||
|
@@ -79,13 +75,9 @@
|
||||||
|
if (gnutls_init (&data->sess, GNUTLS_CLIENT) != 0) {
|
||||||
|
gnutls_certificate_free_credentials (data->cred);
|
||||||
|
return IKS_NOMEM;
|
||||||
|
}
|
||||||
|
- gnutls_protocol_set_priority (data->sess, protocol_priority);
|
||||||
|
- gnutls_cipher_set_priority(data->sess, cipher_priority);
|
||||||
|
- gnutls_compression_set_priority(data->sess, comp_priority);
|
||||||
|
- gnutls_kx_set_priority(data->sess, kx_priority);
|
||||||
|
- gnutls_mac_set_priority(data->sess, mac_priority);
|
||||||
|
+ gnutls_priority_set_direct(data->sess, priority_string, NULL);
|
||||||
|
gnutls_credentials_set (data->sess, GNUTLS_CRD_CERTIFICATE, data->cred);
|
||||||
|
|
||||||
|
gnutls_transport_set_push_function (data->sess, (gnutls_push_func) tls_push);
|
||||||
|
gnutls_transport_set_pull_function (data->sess, (gnutls_pull_func) tls_pull);
|
|
@ -9,7 +9,7 @@ include $(TOPDIR)/rules.mk
|
||||||
|
|
||||||
PKG_NAME:=libosip2
|
PKG_NAME:=libosip2
|
||||||
PKG_VERSION:=4.1.0
|
PKG_VERSION:=4.1.0
|
||||||
PKG_RELEASE:=1
|
PKG_RELEASE:=2
|
||||||
|
|
||||||
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
|
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
|
||||||
PKG_SOURCE_URL:=@GNU/osip
|
PKG_SOURCE_URL:=@GNU/osip
|
||||||
|
|
|
@ -0,0 +1,69 @@
|
||||||
|
Upstream patches by Aymeric Moizard <amoizard@gmail.com>:
|
||||||
|
|
||||||
|
7e0793e15e21f68337e130c67b031ca38edf055f
|
||||||
|
1d9fb1d3a71cc85ef95352e549b140c706cf8696
|
||||||
|
b9dd097b5b24f5ee54b0a8739e59641cd51b6ead
|
||||||
|
1ae06daf3b2375c34af23083394a6f010be24a45
|
||||||
|
|
||||||
|
--- libosip2-4.1.0.orig/src/osipparser2/osip_body.c
|
||||||
|
+++ libosip2-4.1.0/src/osipparser2/osip_body.c
|
||||||
|
@@ -417,6 +417,14 @@ osip_body_to_str (const osip_body_t * bo
|
||||||
|
}
|
||||||
|
|
||||||
|
if ((osip_list_size (body->headers) > 0) || (body->content_type != NULL)) {
|
||||||
|
+ if (length < tmp_body - ptr + 3) {
|
||||||
|
+ size_t len;
|
||||||
|
+
|
||||||
|
+ len = tmp_body - ptr;
|
||||||
|
+ length = length + 3 + body->length; /* add body->length, to avoid calling realloc often */
|
||||||
|
+ ptr = osip_realloc (ptr, length);
|
||||||
|
+ tmp_body = ptr + len;
|
||||||
|
+ }
|
||||||
|
tmp_body = osip_strn_append (tmp_body, CRLF, 2);
|
||||||
|
}
|
||||||
|
if (length < tmp_body - ptr + body->length + 4) {
|
||||||
|
--- libosip2-4.1.0.orig/src/osipparser2/osip_message_parse.c
|
||||||
|
+++ libosip2-4.1.0/src/osipparser2/osip_message_parse.c
|
||||||
|
@@ -812,6 +812,12 @@ msg_osip_body_parse (osip_message_t * si
|
||||||
|
if ('\n' == start_of_body[0] || '\r' == start_of_body[0])
|
||||||
|
start_of_body++;
|
||||||
|
|
||||||
|
+ /* if message body is empty or contains a single CR/LF */
|
||||||
|
+ if (end_of_body <= start_of_body) {
|
||||||
|
+ osip_free (sep_boundary);
|
||||||
|
+ return OSIP_SYNTAXERROR;
|
||||||
|
+ }
|
||||||
|
+
|
||||||
|
body_len = end_of_body - start_of_body;
|
||||||
|
|
||||||
|
/* Skip CR before end boundary. */
|
||||||
|
--- libosip2-4.1.0.orig/src/osipparser2/osip_message_to_str.c
|
||||||
|
+++ libosip2-4.1.0/src/osipparser2/osip_message_to_str.c
|
||||||
|
@@ -378,6 +378,13 @@ _osip_message_to_str (osip_message_t * s
|
||||||
|
/* A start-line isn't required for message/sipfrag parts. */
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
+ size_t message_len = strlen(tmp);
|
||||||
|
+ if (_osip_message_realloc (&message, dest, message_len + 3, &malloc_size) < 0) {
|
||||||
|
+ osip_free (tmp);
|
||||||
|
+ *dest = NULL;
|
||||||
|
+ return OSIP_NOMEM;
|
||||||
|
+ }
|
||||||
|
+
|
||||||
|
message = osip_str_append (message, tmp);
|
||||||
|
osip_free (tmp);
|
||||||
|
message = osip_strn_append (message, CRLF, 2);
|
||||||
|
--- libosip2-4.1.0.orig/src/osipparser2/osip_port.c
|
||||||
|
+++ libosip2-4.1.0/src/osipparser2/osip_port.c
|
||||||
|
@@ -1462,8 +1462,10 @@ osip_clrncpy (char *dst, const char *src
|
||||||
|
char *p;
|
||||||
|
size_t spaceless_length;
|
||||||
|
|
||||||
|
- if (src == NULL)
|
||||||
|
+ if (src == NULL || len == 0) {
|
||||||
|
+ *dst = '\0';
|
||||||
|
return NULL;
|
||||||
|
+ }
|
||||||
|
|
||||||
|
/* find the start of relevant text */
|
||||||
|
pbeg = src;
|
54
libs/libpri/Makefile
Normal file
54
libs/libpri/Makefile
Normal file
|
@ -0,0 +1,54 @@
|
||||||
|
#
|
||||||
|
# Copyright (C) 2015 OpenWrt.org
|
||||||
|
#
|
||||||
|
# This is free software, licensed under the GNU General Public License v2.
|
||||||
|
# See /LICENSE for more information.
|
||||||
|
#
|
||||||
|
|
||||||
|
include $(TOPDIR)/rules.mk
|
||||||
|
|
||||||
|
PKG_NAME:=libpri
|
||||||
|
PKG_VERSION:=1.4.15
|
||||||
|
PKG_RELEASE:=1
|
||||||
|
|
||||||
|
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
|
||||||
|
PKG_SOURCE_URL:=http://downloads.asterisk.org/pub/telephony/libpri/old/
|
||||||
|
PKG_MD5SUM:=206fbcf014ad85bf6613f169ca425e7f
|
||||||
|
PKG_MAINTAINER:=Daniel Golle <daniel@makrotopia.org>
|
||||||
|
|
||||||
|
PKG_INSTALL:=1
|
||||||
|
|
||||||
|
include $(INCLUDE_DIR)/package.mk
|
||||||
|
|
||||||
|
define Package/libpri
|
||||||
|
SECTION:=libs
|
||||||
|
CATEGORY:=Libraries
|
||||||
|
TITLE:=libpri Primary Rate ISDN implementation
|
||||||
|
URL:=http://www.asterisk.org/
|
||||||
|
DEPENDS:=+dahdi-tools-libtonezone
|
||||||
|
endef
|
||||||
|
|
||||||
|
define Package/libpri/description
|
||||||
|
libpri is a C implementation of the Primary Rate ISDN specification. It was
|
||||||
|
based on the Bellcore specification SR-NWT-002343 for National ISDN. As of
|
||||||
|
May 12, 2001, it has been tested work with NI-2, Nortel DMS-100, and
|
||||||
|
Lucent 5E Custom protocols on switches from Nortel and Lucent.
|
||||||
|
endef
|
||||||
|
|
||||||
|
define Build/Configure
|
||||||
|
endef
|
||||||
|
|
||||||
|
define Build/InstallDev
|
||||||
|
$(INSTALL_DIR) $(1)/usr/include
|
||||||
|
$(CP) $(PKG_INSTALL_DIR)/usr/include/* $(1)/usr/include/
|
||||||
|
$(INSTALL_DIR) $(1)/usr/lib
|
||||||
|
$(CP) $(PKG_INSTALL_DIR)/usr/lib/libpri*.a $(1)/usr/lib/
|
||||||
|
$(CP) $(PKG_INSTALL_DIR)/usr/lib/libpri*.so* $(1)/usr/lib/
|
||||||
|
endef
|
||||||
|
|
||||||
|
define Package/libpri/install
|
||||||
|
$(INSTALL_DIR) $(1)/usr/lib
|
||||||
|
$(CP) $(PKG_INSTALL_DIR)/usr/lib/libpri*.so.* $(1)/usr/lib/
|
||||||
|
endef
|
||||||
|
|
||||||
|
$(eval $(call BuildPackage,libpri))
|
|
@ -9,7 +9,7 @@ include $(TOPDIR)/rules.mk
|
||||||
|
|
||||||
PKG_NAME:=libsrtp
|
PKG_NAME:=libsrtp
|
||||||
PKG_VERSION:=1.4.4
|
PKG_VERSION:=1.4.4
|
||||||
PKG_RELEASE:=1
|
PKG_RELEASE:=2
|
||||||
|
|
||||||
PKG_SOURCE:=srtp-$(PKG_VERSION).tgz
|
PKG_SOURCE:=srtp-$(PKG_VERSION).tgz
|
||||||
PKG_SOURCE_URL:=@SF/srtp
|
PKG_SOURCE_URL:=@SF/srtp
|
||||||
|
@ -20,7 +20,7 @@ PKG_INSTALL:=1
|
||||||
|
|
||||||
PKG_LICENSE:=BSD-3-Clause
|
PKG_LICENSE:=BSD-3-Clause
|
||||||
PKG_LICENSE_FILES:=LICENSE
|
PKG_LICENSE_FILES:=LICENSE
|
||||||
PKG_MAINTAINER:=Jiri Slachta <slachta@cesnet.cz>
|
PKG_MAINTAINER:=Jiri Slachta <jiri@slachta.eu>
|
||||||
|
|
||||||
include $(INCLUDE_DIR)/package.mk
|
include $(INCLUDE_DIR)/package.mk
|
||||||
|
|
||||||
|
|
39
libs/libsrtp/patches/1009_CVE-2013-2139.patch
Normal file
39
libs/libsrtp/patches/1009_CVE-2013-2139.patch
Normal file
|
@ -0,0 +1,39 @@
|
||||||
|
Description: CVE-2013-2139: buffer overflow in application of crypto profiles
|
||||||
|
Origin: backport,
|
||||||
|
https://github.com/cisco/libsrtp/pull/27,
|
||||||
|
https://github.com/cisco/libsrtp/commit/8884f4d8eb4ca7122dfcbd640b933b98ef4bab80,
|
||||||
|
https://github.com/cisco/libsrtp/commit/8e47faf0f5b90672c7ebf2f0cf0562ee81a8b621,
|
||||||
|
https://github.com/cisco/libsrtp/commit/0acbb039c12b790621839facf56bfedbd071b74d
|
||||||
|
Bug: https://github.com/cisco/libsrtp/issues/24
|
||||||
|
Bug-Debian: http://bugs.debian.org/711163
|
||||||
|
Forwarded: not-needed
|
||||||
|
Author: Salvatore Bonaccorso <carnil@debian.org>
|
||||||
|
Last-Update: 2014-01-02
|
||||||
|
|
||||||
|
--- a/srtp/srtp.c
|
||||||
|
+++ b/srtp/srtp.c
|
||||||
|
@@ -1807,15 +1807,12 @@
|
||||||
|
switch(profile) {
|
||||||
|
case srtp_profile_aes128_cm_sha1_80:
|
||||||
|
crypto_policy_set_aes_cm_128_hmac_sha1_80(policy);
|
||||||
|
- crypto_policy_set_aes_cm_128_hmac_sha1_80(policy);
|
||||||
|
break;
|
||||||
|
case srtp_profile_aes128_cm_sha1_32:
|
||||||
|
crypto_policy_set_aes_cm_128_hmac_sha1_32(policy);
|
||||||
|
- crypto_policy_set_aes_cm_128_hmac_sha1_80(policy);
|
||||||
|
break;
|
||||||
|
case srtp_profile_null_sha1_80:
|
||||||
|
crypto_policy_set_null_cipher_hmac_sha1_80(policy);
|
||||||
|
- crypto_policy_set_null_cipher_hmac_sha1_80(policy);
|
||||||
|
break;
|
||||||
|
/* the following profiles are not (yet) supported */
|
||||||
|
case srtp_profile_null_sha1_32:
|
||||||
|
@@ -1838,6 +1835,8 @@
|
||||||
|
crypto_policy_set_aes_cm_128_hmac_sha1_80(policy);
|
||||||
|
break;
|
||||||
|
case srtp_profile_aes128_cm_sha1_32:
|
||||||
|
+ /* We do not honor the 32-bit auth tag request since
|
||||||
|
+ * this is not compliant with RFC 3711 */
|
||||||
|
crypto_policy_set_aes_cm_128_hmac_sha1_80(policy);
|
||||||
|
break;
|
||||||
|
case srtp_profile_null_sha1_80:
|
13
libs/libsrtp/patches/1010-CVE-2015-6360-1.patch
Normal file
13
libs/libsrtp/patches/1010-CVE-2015-6360-1.patch
Normal file
|
@ -0,0 +1,13 @@
|
||||||
|
Index: srtp-1.4.4~dfsg/srtp/srtp.c
|
||||||
|
===================================================================
|
||||||
|
--- srtp-1.4.4~dfsg.orig/srtp/srtp.c 2016-01-17 19:49:52.000000000 +0100
|
||||||
|
+++ srtp-1.4.4~dfsg/srtp/srtp.c 2016-01-17 22:50:43.000000000 +0100
|
||||||
|
@@ -938,6 +938,8 @@
|
||||||
|
srtp_hdr_xtnd_t *xtn_hdr = (srtp_hdr_xtnd_t *)enc_start;
|
||||||
|
enc_start += (ntohs(xtn_hdr->length) + 1);
|
||||||
|
}
|
||||||
|
+ if (!((uint8_t*)enc_start < (uint8_t*)hdr + (*pkt_octet_len - tag_len)))
|
||||||
|
+ return err_status_parse_err;
|
||||||
|
enc_octet_len = (uint32_t)(*pkt_octet_len - tag_len
|
||||||
|
- ((enc_start - (uint32_t *)hdr) << 2));
|
||||||
|
} else {
|
|
@ -1,5 +1,5 @@
|
||||||
#
|
#
|
||||||
# Copyright (C) 2015 OpenWrt.org
|
# Copyright (C) 2015 - 2018 OpenWrt.org
|
||||||
# Copyright (C) 2015 Cesnet, z.s.p.o.
|
# Copyright (C) 2015 Cesnet, z.s.p.o.
|
||||||
#
|
#
|
||||||
# This is free software, licensed under the GNU General Public License v2.
|
# This is free software, licensed under the GNU General Public License v2.
|
||||||
|
@ -9,18 +9,18 @@
|
||||||
include $(TOPDIR)/rules.mk
|
include $(TOPDIR)/rules.mk
|
||||||
|
|
||||||
PKG_NAME:=pjproject
|
PKG_NAME:=pjproject
|
||||||
PKG_VERSION:=2.4
|
PKG_VERSION:=2.7.2
|
||||||
PKG_RELEASE:=1
|
PKG_RELEASE:=1
|
||||||
|
|
||||||
PKG_SOURCE:=pjproject-$(PKG_VERSION).tar.bz2
|
PKG_SOURCE:=pjproject-$(PKG_VERSION).tar.bz2
|
||||||
PKG_SOURCE_URL:=http://www.pjsip.org/release/$(PKG_VERSION)/
|
PKG_SOURCE_URL:=http://www.pjsip.org/release/$(PKG_VERSION)/
|
||||||
PKG_MD5SUM:=39629ca3fcedbdc7dbd8c5a707060095
|
PKG_MD5SUM:=fa3f0bc098c4bff48ddd92db1c016a7a
|
||||||
PKG_INSTALL:=1
|
PKG_INSTALL:=1
|
||||||
PKG_FIXUP:=autoreconf
|
PKG_FIXUP:=autoreconf
|
||||||
|
|
||||||
PKG_LICENSE:=GPL-2.0
|
PKG_LICENSE:=GPL-2.0
|
||||||
PKG_LICENSE_FILES:=COPYING
|
PKG_LICENSE_FILES:=COPYING
|
||||||
PKG_MAINTAINER:=Jiri Slachta <slachta@cesnet.cz>
|
PKG_MAINTAINER:=Jiri Slachta <jiri@slachta.eu>
|
||||||
|
|
||||||
PKG_BUILD_DIR:=$(BUILD_DIR)/$(PKG_NAME)-$(PKG_VERSION)
|
PKG_BUILD_DIR:=$(BUILD_DIR)/$(PKG_NAME)-$(PKG_VERSION)
|
||||||
|
|
||||||
|
@ -31,12 +31,12 @@ define Package/pjproject/Default
|
||||||
CATEGORY:=Libraries
|
CATEGORY:=Libraries
|
||||||
SUBMENU:=Telephony
|
SUBMENU:=Telephony
|
||||||
URL:=http://www.pjsip.org/
|
URL:=http://www.pjsip.org/
|
||||||
DEPENDS:=+libuuid +libstdcpp +libpthread
|
DEPENDS:=+libopenssl +libuuid +libstdcpp +libpthread
|
||||||
endef
|
endef
|
||||||
|
|
||||||
define Package/pjproject/install/lib
|
define Package/pjproject/install/lib
|
||||||
$(INSTALL_DIR) $(1)/usr/lib
|
$(INSTALL_DIR) $(1)/usr/lib
|
||||||
$(INSTALL_BIN) $(PKG_INSTALL_DIR)/usr/lib/$(2).so* $(1)/usr/lib/
|
$(CP) $(PKG_INSTALL_DIR)/usr/lib/$(2).so* $(1)/usr/lib/
|
||||||
endef
|
endef
|
||||||
|
|
||||||
define PJSIPpackage
|
define PJSIPpackage
|
||||||
|
@ -54,46 +54,47 @@ $(call Package/pjproject/install/lib,$$(1),$2)
|
||||||
endef
|
endef
|
||||||
|
|
||||||
CONFIGURE_ARGS += \
|
CONFIGURE_ARGS += \
|
||||||
--enable-shared \
|
$(if $(CONFIG_SOFT_FLOAT),--disable-floating-point) \
|
||||||
--disable-floating-point \
|
--disable-bcg729 \
|
||||||
--enable-g711-codec \
|
--disable-ext-sound \
|
||||||
--disable-l16-codec \
|
|
||||||
--disable-g722-codec \
|
|
||||||
--disable-g7221-codec \
|
|
||||||
--disable-gsm-codec \
|
|
||||||
--disable-ilbc-coder \
|
|
||||||
--disable-ipp \
|
|
||||||
--disable-ssl \
|
|
||||||
--disable-oss \
|
|
||||||
--disable-sound \
|
|
||||||
--with-external-srtp="$(STAGING_DIR)/usr" \
|
|
||||||
--without-external-gsm \
|
|
||||||
--disable-small-filter \
|
|
||||||
--disable-large-filter \
|
|
||||||
--disable-speex-aec \
|
|
||||||
--disable-g711-codec \
|
|
||||||
--disable-l16-codec \
|
|
||||||
--disable-gsm-codec \
|
|
||||||
--disable-g722-codec \
|
|
||||||
--disable-g7221-codec \
|
|
||||||
--disable-speex-codec \
|
|
||||||
--disable-ilbc-codec \
|
|
||||||
--disable-resample-dll \
|
|
||||||
--disable-sdl \
|
|
||||||
--disable-ffmpeg \
|
--disable-ffmpeg \
|
||||||
--disable-v4l2
|
--disable-g711-codec \
|
||||||
|
--disable-g722-codec \
|
||||||
|
--disable-g7221-codec \
|
||||||
|
--disable-gsm-codec \
|
||||||
|
--disable-ilbc-codec \
|
||||||
|
--disable-ipp \
|
||||||
|
--disable-l16-codec \
|
||||||
|
--disable-libwebrtc \
|
||||||
|
--disable-libyuv \
|
||||||
|
--disable-opencore-amr \
|
||||||
|
--disable-openh264 \
|
||||||
|
--disable-opus \
|
||||||
|
--disable-oss \
|
||||||
|
--disable-resample \
|
||||||
|
--disable-sdl \
|
||||||
|
--disable-silk \
|
||||||
|
--disable-sound \
|
||||||
|
--disable-speex-aec \
|
||||||
|
--disable-speex-codec \
|
||||||
|
--disable-v4l2 \
|
||||||
|
--disable-video \
|
||||||
|
--enable-shared \
|
||||||
|
--with-external-srtp="$(STAGING_DIR)/usr" \
|
||||||
|
--with-ssl="$(STAGING_DIR)/usr" \
|
||||||
|
--without-external-gsm \
|
||||||
|
--without-external-pa \
|
||||||
|
--without-external-webrtc
|
||||||
|
|
||||||
TARGET_LDFLAGS+=-lc $(LIBGCC) -lm
|
TARGET_CFLAGS+=$(TARGET_CPPFLAGS)
|
||||||
TARGET_CFLAGS+=$(EXTRA_CFLAGS) $(TARGET_CPPFLAGS) $(EXTRA_CPPFLAGS)
|
|
||||||
|
|
||||||
define Build/Compile
|
define Build/Compile
|
||||||
$(MAKE) $(PKG_JOBS) -C $(PKG_BUILD_DIR)
|
$(MAKE) $(PKG_JOBS) -C $(PKG_BUILD_DIR)
|
||||||
endef
|
endef
|
||||||
|
|
||||||
PJPROJECT_LIBS = \
|
PJPROJECT_LIBS = \
|
||||||
libpj libpjlib-util libpjmedia-audiodev libpjmedia-codec \
|
libpj libpjlib-util libpjmedia libpjnath libpjsip-simple \
|
||||||
libpjmedia-videodev libpjmedia libpjnath libpjsip-simple \
|
libpjsip-ua libpjsip libpjsua libpjsua2
|
||||||
libpjsip-ua libpjsip libpjsua libpjsua2 libresample
|
|
||||||
|
|
||||||
define Build/InstallDev
|
define Build/InstallDev
|
||||||
$(INSTALL_DIR) $(1)/usr/{include,lib}
|
$(INSTALL_DIR) $(1)/usr/{include,lib}
|
||||||
|
@ -102,16 +103,16 @@ define Build/InstallDev
|
||||||
|
|
||||||
$(foreach m,$(PJPROJECT_LIBS),$(CP) $(PKG_INSTALL_DIR)/usr/lib/$(m)* $(1)/usr/lib/;)
|
$(foreach m,$(PJPROJECT_LIBS),$(CP) $(PKG_INSTALL_DIR)/usr/lib/$(m)* $(1)/usr/lib/;)
|
||||||
$(INSTALL_DIR) $(1)/usr/lib/pkgconfig
|
$(INSTALL_DIR) $(1)/usr/lib/pkgconfig
|
||||||
|
$(SED) 's|$(TARGET_CFLAGS)||g' $(PKG_INSTALL_DIR)/usr/lib/pkgconfig/libpjproject.pc
|
||||||
$(CP) $(PKG_INSTALL_DIR)/usr/lib/pkgconfig/libpjproject.pc $(1)/usr/lib/pkgconfig/
|
$(CP) $(PKG_INSTALL_DIR)/usr/lib/pkgconfig/libpjproject.pc $(1)/usr/lib/pkgconfig/
|
||||||
endef
|
endef
|
||||||
|
|
||||||
$(eval $(call PJSIPpackage,libpj,libpj,+librt))
|
$(eval $(call PJSIPpackage,libpj,libpj,+librt))
|
||||||
$(eval $(call PJSIPpackage,libpjlib-util,libpjlib-util,+libpj +librt))
|
$(eval $(call PJSIPpackage,libpjlib-util,libpjlib-util,+libpj +librt))
|
||||||
$(eval $(call PJSIPpackage,libpjmedia,libpjmedia*,+libpj +libpjlib-util +libpjnath +libresample +librt +libspeex +libsrtp))
|
$(eval $(call PJSIPpackage,libpjmedia,libpjmedia*,+libpj +libpjlib-util +libpjnath +librt +libsrtp))
|
||||||
$(eval $(call PJSIPpackage,libpjnath,libpjnath,+libpj +libpjlib-util +librt))
|
$(eval $(call PJSIPpackage,libpjnath,libpjnath,+libpj +libpjlib-util +librt))
|
||||||
$(eval $(call PJSIPpackage,libpjsip-simple,libpjsip-simple,+libpj +libpjlib-util +libpjsip +libresample +librt +libspeex +libsrtp))
|
$(eval $(call PJSIPpackage,libpjsip-simple,libpjsip-simple,+libpj +libpjlib-util +libpjsip +librt))
|
||||||
$(eval $(call PJSIPpackage,libpjsip-ua,libpjsip-ua,+libpj +libpjlib-util +libpjmedia +libpjsip-simple +libpjsip +libresample +librt +libspeex +libsrtp))
|
$(eval $(call PJSIPpackage,libpjsip-ua,libpjsip-ua,+libpj +libpjlib-util +libpjmedia +libpjsip-simple +libpjsip +librt))
|
||||||
$(eval $(call PJSIPpackage,libpjsip,libpjsip,+libpj +libpjlib-util +libresample +librt +libspeex +libsrtp))
|
$(eval $(call PJSIPpackage,libpjsip,libpjsip,+libpj +libpjlib-util +librt +libsrtp))
|
||||||
$(eval $(call PJSIPpackage,libpjsua,libpjsua,+libpj +libpjlib-util +libpjmedia +libpjnath +libpjsip-simple +libpjsip-ua +libpjsip +libresample +librt +libspeex +libsrtp))
|
$(eval $(call PJSIPpackage,libpjsua,libpjsua,+libpj +libpjlib-util +libpjmedia +libpjnath +libpjsip-simple +libpjsip-ua +libpjsip +librt))
|
||||||
$(eval $(call PJSIPpackage,libpjsua2,libpjsua2,+libpj +libpjlib-util +libpjmedia +libpjnath +libpjsip-simple +libpjsip-ua +libpjsip +libresample +librt +libspeex +libsrtp +libpjsua))
|
$(eval $(call PJSIPpackage,libpjsua2,libpjsua2,+libpj +libpjlib-util +libpjmedia +libpjnath +libpjsip-simple +libpjsip-ua +libpjsip +librt +libpjsua))
|
||||||
$(eval $(call PJSIPpackage,libresample,libresample,))
|
|
||||||
|
|
20
libs/pjproject/patches/120-non-gnu-pthreads.patch
Normal file
20
libs/pjproject/patches/120-non-gnu-pthreads.patch
Normal file
|
@ -0,0 +1,20 @@
|
||||||
|
--- pjproject-2.6/pjlib/src/pj/os_core_unix.c 2016-04-13 08:24:48.000000000 +0200
|
||||||
|
+++ pjproject-new/pjlib/src/pj/os_core_unix.c 2017-05-08 09:51:49.980905420 +0200
|
||||||
|
@@ -1123,7 +1123,7 @@ static pj_status_t init_mutex(pj_mutex_t
|
||||||
|
return PJ_RETURN_OS_ERROR(rc);
|
||||||
|
|
||||||
|
if (type == PJ_MUTEX_SIMPLE) {
|
||||||
|
-#if (defined(PJ_LINUX) && PJ_LINUX!=0) || \
|
||||||
|
+#if (defined(PJ_LINUX) && PJ_LINUX!=0 && defined(__GLIBC__)) || \
|
||||||
|
defined(PJ_HAS_PTHREAD_MUTEXATTR_SETTYPE)
|
||||||
|
rc = pthread_mutexattr_settype(&attr, PTHREAD_MUTEX_NORMAL);
|
||||||
|
#elif (defined(PJ_RTEMS) && PJ_RTEMS!=0) || \
|
||||||
|
@@ -1133,7 +1133,7 @@ static pj_status_t init_mutex(pj_mutex_t
|
||||||
|
rc = pthread_mutexattr_settype(&attr, PTHREAD_MUTEX_NORMAL);
|
||||||
|
#endif
|
||||||
|
} else {
|
||||||
|
-#if (defined(PJ_LINUX) && PJ_LINUX!=0) || \
|
||||||
|
+#if (defined(PJ_LINUX) && PJ_LINUX!=0 && defined(__GLIBC__)) || \
|
||||||
|
defined(PJ_HAS_PTHREAD_MUTEXATTR_SETTYPE)
|
||||||
|
rc = pthread_mutexattr_settype(&attr, PTHREAD_MUTEX_RECURSIVE);
|
||||||
|
#elif (defined(PJ_RTEMS) && PJ_RTEMS!=0) || \
|
95
libs/pjproject/patches/150-config_site.patch
Normal file
95
libs/pjproject/patches/150-config_site.patch
Normal file
|
@ -0,0 +1,95 @@
|
||||||
|
--- /dev/null
|
||||||
|
+++ b/pjlib/include/pj/config_site.h
|
||||||
|
@@ -0,0 +1,92 @@
|
||||||
|
+/*
|
||||||
|
+ * Asterisk config_site.h
|
||||||
|
+ */
|
||||||
|
+
|
||||||
|
+#include <sys/select.h>
|
||||||
|
+
|
||||||
|
+/*
|
||||||
|
+ * Since both pjproject and asterisk source files will include config_site.h,
|
||||||
|
+ * we need to make sure that only pjproject source files include asterisk_malloc_debug.h.
|
||||||
|
+ */
|
||||||
|
+
|
||||||
|
+/* #if defined(MALLOC_DEBUG) && !defined(_ASTERISK_ASTMM_H)
|
||||||
|
+ * #include "asterisk_malloc_debug.h"
|
||||||
|
+ * #endif
|
||||||
|
+ */
|
||||||
|
+
|
||||||
|
+/*
|
||||||
|
+ * Defining PJMEDIA_HAS_SRTP to 0 does NOT disable Asterisk's ability to use srtp.
|
||||||
|
+ * It only disables the pjmedia srtp transport which Asterisk doesn't use.
|
||||||
|
+ * The reason for the disable is that while Asterisk works fine with older libsrtp
|
||||||
|
+ * versions, newer versions of pjproject won't compile with them.
|
||||||
|
+ */
|
||||||
|
+
|
||||||
|
+/*
|
||||||
|
+ * This doesn't disable SRTP completely, so we have to keep using the external
|
||||||
|
+ * libsrtp, otherwise pjsip would just build the internal one.
|
||||||
|
+ */
|
||||||
|
+
|
||||||
|
+#define PJMEDIA_HAS_SRTP 0
|
||||||
|
+
|
||||||
|
+/*
|
||||||
|
+ * Defining PJMEDIA_HAS_WEBRTC_AEC to 0 does NOT disable Asterisk's ability to use
|
||||||
|
+ * webrtc. It only disables the pjmedia webrtc transport which Asterisk doesn't use.
|
||||||
|
+ */
|
||||||
|
+#define PJMEDIA_HAS_WEBRTC_AEC 0
|
||||||
|
+
|
||||||
|
+#define PJ_HAS_IPV6 1
|
||||||
|
+#define NDEBUG 1
|
||||||
|
+#define PJ_MAX_HOSTNAME (256)
|
||||||
|
+#define PJSIP_MAX_URL_SIZE (512)
|
||||||
|
+#ifdef PJ_HAS_LINUX_EPOLL
|
||||||
|
+#define PJ_IOQUEUE_MAX_HANDLES (5000)
|
||||||
|
+#else
|
||||||
|
+#define PJ_IOQUEUE_MAX_HANDLES (FD_SETSIZE)
|
||||||
|
+#endif
|
||||||
|
+#define PJ_IOQUEUE_HAS_SAFE_UNREG 1
|
||||||
|
+#define PJ_IOQUEUE_MAX_EVENTS_IN_SINGLE_POLL (16)
|
||||||
|
+
|
||||||
|
+#define PJ_SCANNER_USE_BITWISE 0
|
||||||
|
+#define PJ_OS_HAS_CHECK_STACK 0
|
||||||
|
+
|
||||||
|
+#ifndef PJ_LOG_MAX_LEVEL
|
||||||
|
+#define PJ_LOG_MAX_LEVEL 6
|
||||||
|
+#endif
|
||||||
|
+
|
||||||
|
+#define PJ_ENABLE_EXTRA_CHECK 1
|
||||||
|
+#define PJSIP_MAX_TSX_COUNT ((64*1024)-1)
|
||||||
|
+#define PJSIP_MAX_DIALOG_COUNT ((64*1024)-1)
|
||||||
|
+#define PJSIP_UDP_SO_SNDBUF_SIZE (512*1024)
|
||||||
|
+#define PJSIP_UDP_SO_RCVBUF_SIZE (512*1024)
|
||||||
|
+#define PJ_DEBUG 0
|
||||||
|
+#define PJSIP_SAFE_MODULE 0
|
||||||
|
+#define PJ_HAS_STRICMP_ALNUM 0
|
||||||
|
+
|
||||||
|
+/*
|
||||||
|
+ * Do not ever enable PJ_HASH_USE_OWN_TOLOWER because the algorithm is
|
||||||
|
+ * inconsistently used when calculating the hash value and doesn't
|
||||||
|
+ * convert the same characters as pj_tolower()/tolower(). Thus you
|
||||||
|
+ * can get different hash values if the string hashed has certain
|
||||||
|
+ * characters in it. (ASCII '@', '[', '\\', ']', '^', and '_')
|
||||||
|
+ */
|
||||||
|
+#undef PJ_HASH_USE_OWN_TOLOWER
|
||||||
|
+
|
||||||
|
+/*
|
||||||
|
+ It is imperative that PJSIP_UNESCAPE_IN_PLACE remain 0 or undefined.
|
||||||
|
+ Enabling it will result in SEGFAULTS when URIs containing escape sequences are encountered.
|
||||||
|
+*/
|
||||||
|
+#undef PJSIP_UNESCAPE_IN_PLACE
|
||||||
|
+#define PJSIP_MAX_PKT_LEN 6000
|
||||||
|
+
|
||||||
|
+#undef PJ_TODO
|
||||||
|
+#define PJ_TODO(x)
|
||||||
|
+
|
||||||
|
+/* Defaults too low for WebRTC */
|
||||||
|
+#define PJ_ICE_MAX_CAND 32
|
||||||
|
+#define PJ_ICE_MAX_CHECKS (PJ_ICE_MAX_CAND * PJ_ICE_MAX_CAND)
|
||||||
|
+
|
||||||
|
+/* Increase limits to allow more formats */
|
||||||
|
+#define PJMEDIA_MAX_SDP_FMT 64
|
||||||
|
+#define PJMEDIA_MAX_SDP_BANDW 4
|
||||||
|
+#define PJMEDIA_MAX_SDP_ATTR (PJMEDIA_MAX_SDP_FMT*2 + 4)
|
||||||
|
+#define PJMEDIA_MAX_SDP_MEDIA 16
|
|
@ -1,5 +1,5 @@
|
||||||
#
|
#
|
||||||
# Copyright (C) 2010-2015 OpenWrt.org
|
# Copyright (C) 2010-2017 OpenWrt.org
|
||||||
# Copyright (C) 2010 Alfred E. Heggestad
|
# Copyright (C) 2010 Alfred E. Heggestad
|
||||||
#
|
#
|
||||||
# This is free software, licensed under the GNU General Public License v2.
|
# This is free software, licensed under the GNU General Public License v2.
|
||||||
|
@ -9,16 +9,16 @@
|
||||||
include $(TOPDIR)/rules.mk
|
include $(TOPDIR)/rules.mk
|
||||||
|
|
||||||
PKG_NAME:=re
|
PKG_NAME:=re
|
||||||
PKG_VERSION:=0.4.12
|
PKG_VERSION:=0.5.6
|
||||||
PKG_RELEASE:=1
|
PKG_RELEASE:=1
|
||||||
|
|
||||||
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
|
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
|
||||||
PKG_SOURCE_URL:=http://www.creytiv.com/pub
|
PKG_SOURCE_URL:=http://www.creytiv.com/pub
|
||||||
PKG_MD5SUM:=f065b362bc97f8eed3d3cc44767983d6
|
PKG_MD5SUM:=90b34503ecc4f3a5e0249b6e4f65d8cf
|
||||||
|
|
||||||
PKG_LICENSE:=BSD-3-Clause
|
PKG_LICENSE:=BSD-3-Clause
|
||||||
PKG_LICENSE_FILES:=docs/COPYING
|
PKG_LICENSE_FILES:=docs/COPYING
|
||||||
PKG_MAINTAINER:=Jiri Slachta <slachta@cesnet.cz>
|
PKG_MAINTAINER:=Jiri Slachta <jiri@slachta.eu>
|
||||||
|
|
||||||
include $(INCLUDE_DIR)/package.mk
|
include $(INCLUDE_DIR)/package.mk
|
||||||
|
|
||||||
|
@ -26,7 +26,7 @@ define Package/libre
|
||||||
SUBMENU:=Telephony
|
SUBMENU:=Telephony
|
||||||
SECTION:=libs
|
SECTION:=libs
|
||||||
CATEGORY:=Libraries
|
CATEGORY:=Libraries
|
||||||
DEPENDS:=+libopenssl +libpthread
|
DEPENDS:=+libopenssl +libpthread +zlib
|
||||||
TITLE:=Generic library for real-time communications with async IO support
|
TITLE:=Generic library for real-time communications with async IO support
|
||||||
URL:=http://www.creytiv.com/
|
URL:=http://www.creytiv.com/
|
||||||
endef
|
endef
|
||||||
|
|
20
libs/re/patches/001-extend-ninit-nclose-check.patch
Normal file
20
libs/re/patches/001-extend-ninit-nclose-check.patch
Normal file
|
@ -0,0 +1,20 @@
|
||||||
|
--- a/src/dns/res.c
|
||||||
|
+++ b/src/dns/res.c
|
||||||
|
@@ -25,7 +25,7 @@ int get_resolv_dns(char *domain, size_t
|
||||||
|
uint32_t i;
|
||||||
|
int ret, err;
|
||||||
|
|
||||||
|
-#ifdef OPENBSD
|
||||||
|
+#if defined(OPENBSD) || defined(OPENWRT)
|
||||||
|
ret = res_init();
|
||||||
|
state = _res;
|
||||||
|
#else
|
||||||
|
@@ -56,7 +56,7 @@ int get_resolv_dns(char *domain, size_t
|
||||||
|
*n = i;
|
||||||
|
|
||||||
|
out:
|
||||||
|
-#ifdef OPENBSD
|
||||||
|
+#if defined(OPENBSD) || defined(OPENWRT)
|
||||||
|
#else
|
||||||
|
res_nclose(&state);
|
||||||
|
#endif
|
|
@ -1,5 +1,5 @@
|
||||||
#
|
#
|
||||||
# Copyright (C) 2010-2014 OpenWrt.org
|
# Copyright (C) 2010-2017 OpenWrt.org
|
||||||
# Copyright (C) 2010 Alfred E. Heggestad
|
# Copyright (C) 2010 Alfred E. Heggestad
|
||||||
#
|
#
|
||||||
# This is free software, licensed under the GNU General Public License v2.
|
# This is free software, licensed under the GNU General Public License v2.
|
||||||
|
@ -9,16 +9,16 @@
|
||||||
include $(TOPDIR)/rules.mk
|
include $(TOPDIR)/rules.mk
|
||||||
|
|
||||||
PKG_NAME:=rem
|
PKG_NAME:=rem
|
||||||
PKG_VERSION:=0.4.6
|
PKG_VERSION:=0.5.2
|
||||||
PKG_RELEASE:=1
|
PKG_RELEASE:=1
|
||||||
|
|
||||||
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
|
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
|
||||||
PKG_SOURCE_URL:=http://www.creytiv.com/pub
|
PKG_SOURCE_URL:=http://www.creytiv.com/pub
|
||||||
PKG_MD5SUM:=888c3000aa002790cc7129fa72d39a58
|
PKG_HASH:=fbc54e81ed4fd28a11d525f4384d06bee4c11e10975395668e8260ef0d4a64eb
|
||||||
|
|
||||||
PKG_LICENSE:=BSD-3-Clause
|
PKG_LICENSE:=BSD-3-Clause
|
||||||
PKG_LICENSE_FILES:=docs/COPYING
|
PKG_LICENSE_FILES:=docs/COPYING
|
||||||
PKG_MAINTAINER:=Jiri Slachta <slachta@cesnet.cz>
|
PKG_MAINTAINER:=Jiri Slachta <jiri@slachta.eu>
|
||||||
|
|
||||||
include $(INCLUDE_DIR)/package.mk
|
include $(INCLUDE_DIR)/package.mk
|
||||||
|
|
||||||
|
|
|
@ -21,7 +21,7 @@ PKG_FIXUP:=autoreconf
|
||||||
|
|
||||||
PKG_LICENSE:=LGPL-2.1 GPL-2.0
|
PKG_LICENSE:=LGPL-2.1 GPL-2.0
|
||||||
PKG_LICENSE_FILES:=COPYING
|
PKG_LICENSE_FILES:=COPYING
|
||||||
PKG_MAINTAINER:=Jiri Slachta <slachta@cesnet.cz>
|
PKG_MAINTAINER:=Jiri Slachta <jiri@slachta.eu>
|
||||||
|
|
||||||
include $(INCLUDE_DIR)/package.mk
|
include $(INCLUDE_DIR)/package.mk
|
||||||
|
|
||||||
|
|
|
@ -10,7 +10,7 @@ include $(TOPDIR)/rules.mk
|
||||||
|
|
||||||
PKG_NAME:=asterisk18
|
PKG_NAME:=asterisk18
|
||||||
PKG_VERSION:=1.8.32.3
|
PKG_VERSION:=1.8.32.3
|
||||||
PKG_RELEASE:=2
|
PKG_RELEASE:=5
|
||||||
|
|
||||||
PKG_SOURCE:=asterisk-$(PKG_VERSION).tar.gz
|
PKG_SOURCE:=asterisk-$(PKG_VERSION).tar.gz
|
||||||
PKG_SOURCE_URL:=http://downloads.asterisk.org/pub/telephony/asterisk/releases/
|
PKG_SOURCE_URL:=http://downloads.asterisk.org/pub/telephony/asterisk/releases/
|
||||||
|
@ -129,6 +129,20 @@ $(foreach m,$(AST_EMB_MODULES),$(call Package/asterisk18/install/module,$(1),$(m
|
||||||
$(INSTALL_BIN) ./files/asterisk.init $(1)/etc/init.d/asterisk
|
$(INSTALL_BIN) ./files/asterisk.init $(1)/etc/init.d/asterisk
|
||||||
endef
|
endef
|
||||||
|
|
||||||
|
define Package/$(PKG_NAME)/postinst
|
||||||
|
#!/bin/sh
|
||||||
|
if [ -z "$${IPKG_INSTROOT}" ]; then
|
||||||
|
echo
|
||||||
|
echo "o-------------------------------------------------------------------o"
|
||||||
|
echo "| Asterisk 1.8 WARNING |"
|
||||||
|
echo "o-------------------------------------------------------------------o"
|
||||||
|
echo "| Asterisk 1.8 is end-of-life. You should upgrade to Asterisk 13. |"
|
||||||
|
echo "o-------------------------------------------------------------=^_^=-o"
|
||||||
|
echo
|
||||||
|
fi
|
||||||
|
exit 0
|
||||||
|
endef
|
||||||
|
|
||||||
define Package/asterisk18-sounds
|
define Package/asterisk18-sounds
|
||||||
$(call Package/asterisk18/Default)
|
$(call Package/asterisk18/Default)
|
||||||
TITLE:=Sounds support
|
TITLE:=Sounds support
|
||||||
|
@ -146,6 +160,18 @@ define Package/asterisk18-sounds/install
|
||||||
rm -f $(1)/usr/lib/asterisk/sounds/conf-*
|
rm -f $(1)/usr/lib/asterisk/sounds/conf-*
|
||||||
endef
|
endef
|
||||||
|
|
||||||
|
ifneq ($(SDK)$(CONFIG_PACKAGE_asterisk18-chan-dahdi),)
|
||||||
|
CONFIGURE_ARGS+= \
|
||||||
|
--with-dahdi="$(STAGING_DIR)/usr" \
|
||||||
|
--with-pri="$(STAGING_DIR)/usr" \
|
||||||
|
--with-tonezone="$(STAGING_DIR)/usr"
|
||||||
|
else
|
||||||
|
CONFIGURE_ARGS+= \
|
||||||
|
--without-dahdi \
|
||||||
|
--without-pri \
|
||||||
|
--without-tonezone
|
||||||
|
endif
|
||||||
|
|
||||||
ifneq ($(SDK)$(CONFIG_PACKAGE_asterisk18-chan-gtalk),)
|
ifneq ($(SDK)$(CONFIG_PACKAGE_asterisk18-chan-gtalk),)
|
||||||
CONFIGURE_ARGS+= \
|
CONFIGURE_ARGS+= \
|
||||||
--with-iksemel="$(STAGING_DIR)/usr"
|
--with-iksemel="$(STAGING_DIR)/usr"
|
||||||
|
@ -166,7 +192,7 @@ endif
|
||||||
|
|
||||||
ifneq ($(SDK)$(CONFIG_PACKAGE_asterisk18-mysql),)
|
ifneq ($(SDK)$(CONFIG_PACKAGE_asterisk18-mysql),)
|
||||||
CONFIGURE_ARGS+= \
|
CONFIGURE_ARGS+= \
|
||||||
--with-mysqlclient
|
--with-mysqlclient="$(STAGING_DIR)/usr"
|
||||||
else
|
else
|
||||||
CONFIGURE_ARGS+= \
|
CONFIGURE_ARGS+= \
|
||||||
--without-mysqlclient
|
--without-mysqlclient
|
||||||
|
@ -212,18 +238,18 @@ CONFIGURE_ARGS+= \
|
||||||
--with-gsm=internal \
|
--with-gsm=internal \
|
||||||
--without-bluetooth \
|
--without-bluetooth \
|
||||||
--without-cap \
|
--without-cap \
|
||||||
--without-dahdi \
|
|
||||||
--without-gtk2 \
|
--without-gtk2 \
|
||||||
--without-isdnnet \
|
--without-isdnnet \
|
||||||
--without-misdn \
|
--without-misdn \
|
||||||
--without-nbs \
|
--without-nbs \
|
||||||
--with-ncurses="$(STAGING_DIR)/usr" \
|
--with-ncurses="$(STAGING_DIR)/usr" \
|
||||||
|
--without-neon \
|
||||||
|
--without-neon29 \
|
||||||
--without-netsnmp \
|
--without-netsnmp \
|
||||||
--without-newt \
|
--without-newt \
|
||||||
--without-ogg \
|
--without-ogg \
|
||||||
--without-osptk \
|
--without-osptk \
|
||||||
--with-popt="$(STAGING_DIR)/usr" \
|
--with-popt="$(STAGING_DIR)/usr" \
|
||||||
--without-pri \
|
|
||||||
--without-radius \
|
--without-radius \
|
||||||
--without-sdl \
|
--without-sdl \
|
||||||
--without-suppserv \
|
--without-suppserv \
|
||||||
|
@ -293,6 +319,7 @@ $(eval $(call BuildPackage,asterisk18-sounds))
|
||||||
|
|
||||||
$(eval $(call BuildAsterisk18Module,app-alarmreceiver,Alarm receiver,Central Station Alarm receiver for Ademco Contact ID,,,,app_alarmreceiver,))
|
$(eval $(call BuildAsterisk18Module,app-alarmreceiver,Alarm receiver,Central Station Alarm receiver for Ademco Contact ID,,,,app_alarmreceiver,))
|
||||||
$(eval $(call BuildAsterisk18Module,app-authenticate,Authenticate commands,Execute arbitrary authenticate commands,,,,app_authenticate,))
|
$(eval $(call BuildAsterisk18Module,app-authenticate,Authenticate commands,Execute arbitrary authenticate commands,,,,app_authenticate,))
|
||||||
|
$(eval $(call BuildAsterisk18Module,app-dahdiras,Execute an ISDN RAS,support for executing an ISDN RAS using DAHDI,+asterisk18-chan-dahdi,,,app_dahdiras,))
|
||||||
$(eval $(call BuildAsterisk18Module,app-directed_pickup,Directed call pickup,support for directed call pickup,,,,app_directed_pickup,))
|
$(eval $(call BuildAsterisk18Module,app-directed_pickup,Directed call pickup,support for directed call pickup,,,,app_directed_pickup,))
|
||||||
$(eval $(call BuildAsterisk18Module,app-disa,Direct Inward System Access,Direct Inward System Access,,,,app_disa,))
|
$(eval $(call BuildAsterisk18Module,app-disa,Direct Inward System Access,Direct Inward System Access,,,,app_disa,))
|
||||||
$(eval $(call BuildAsterisk18Module,app-exec,Exec application,support for application execution,,,,app_exec,))
|
$(eval $(call BuildAsterisk18Module,app-exec,Exec application,support for application execution,,,,app_exec,))
|
||||||
|
@ -319,6 +346,7 @@ $(eval $(call BuildAsterisk18Module,cdr-csv,Provides CDR CSV,Call Detail Record
|
||||||
$(eval $(call BuildAsterisk18Module,cdr,Provides CDR,Call Detail Record,,/etc/asterisk/cdr.conf /etc/asterisk/cdr_custom.conf /etc/asterisk/cdr_manager.conf /etc/asterisk/cdr_syslog.conf,cdr cdr_custom cdr_manager cdr_syslog,app_cdr app_forkcdr cdr_custom cdr_manager cdr_syslog func_cdr,))
|
$(eval $(call BuildAsterisk18Module,cdr,Provides CDR,Call Detail Record,,/etc/asterisk/cdr.conf /etc/asterisk/cdr_custom.conf /etc/asterisk/cdr_manager.conf /etc/asterisk/cdr_syslog.conf,cdr cdr_custom cdr_manager cdr_syslog,app_cdr app_forkcdr cdr_custom cdr_manager cdr_syslog func_cdr,))
|
||||||
$(eval $(call BuildAsterisk18Module,codec-a-mu,Alaw to ulaw translation,translation between alaw and ulaw codecs,,,,codec_a_mu,))
|
$(eval $(call BuildAsterisk18Module,codec-a-mu,Alaw to ulaw translation,translation between alaw and ulaw codecs,,,,codec_a_mu,))
|
||||||
$(eval $(call BuildAsterisk18Module,codec-alaw,Signed linear to alaw translation,translation between signed linear and alaw codecs,,,,codec_alaw,))
|
$(eval $(call BuildAsterisk18Module,codec-alaw,Signed linear to alaw translation,translation between signed linear and alaw codecs,,,,codec_alaw,))
|
||||||
|
$(eval $(call BuildAsterisk18Module,codec-dahdi,DAHDI codec,DAHDI native transcoding support,+asterisk18-chan-dahdi,,,codec_dahdi,))
|
||||||
$(eval $(call BuildAsterisk18Module,codec-g722,G.722,a high bit rate 48/56/64Kbps ITU standard codec,,,,codec_g722,))
|
$(eval $(call BuildAsterisk18Module,codec-g722,G.722,a high bit rate 48/56/64Kbps ITU standard codec,,,,codec_g722,))
|
||||||
$(eval $(call BuildAsterisk18Module,codec-g726,Signed linear to G.726 translation,translation between signed linear and ITU G.726-32kbps codecs,,,,codec_g726,))
|
$(eval $(call BuildAsterisk18Module,codec-g726,Signed linear to G.726 translation,translation between signed linear and ITU G.726-32kbps codecs,,,,codec_g726,))
|
||||||
$(eval $(call BuildAsterisk18Module,curl,CURL,CURL support,+libcurl,,,func_curl res_curl,))
|
$(eval $(call BuildAsterisk18Module,curl,CURL,CURL support,+libcurl,,,func_curl res_curl,))
|
||||||
|
@ -343,7 +371,8 @@ $(eval $(call BuildAsterisk18Module,func-shell,Shell,support for shell execution
|
||||||
$(eval $(call BuildAsterisk18Module,func-uri,URI encoding and decoding,Encodes and decodes URI-safe strings,,,,func_uri,))
|
$(eval $(call BuildAsterisk18Module,func-uri,URI encoding and decoding,Encodes and decodes URI-safe strings,,,,func_uri,))
|
||||||
$(eval $(call BuildAsterisk18Module,func-vmcount,vmcount dialplan,a vmcount dialplan function,,,,func_vmcount,))
|
$(eval $(call BuildAsterisk18Module,func-vmcount,vmcount dialplan,a vmcount dialplan function,,,,func_vmcount,))
|
||||||
$(eval $(call BuildAsterisk18Module,chan-agent,Agents proxy channel,An implementation of agents proxy channel,,,,chan_agent,))
|
$(eval $(call BuildAsterisk18Module,chan-agent,Agents proxy channel,An implementation of agents proxy channel,,,,chan_agent,))
|
||||||
#$(eval $(call BuildAsterisk18Module,chan-gtalk,GTalk,An implementation of chan_gtalk and res_jabber for GTalk support,+libiksemel,/etc/asterisk/gtalk.conf /etc/asterisk/jabber.conf,gtalk.conf jabber.conf,chan_gtalk res_jabber,))
|
$(eval $(call BuildAsterisk18Module,chan-dahdi,DAHDI channel,DAHDI channel support,+dahdi-tools-libtonezone +kmod-dahdi +libpri,/etc/asterisk/chan_dahdi.conf,chan_dahdi.conf,chan_dahdi,))
|
||||||
|
$(eval $(call BuildAsterisk18Module,chan-gtalk,GTalk,An implementation of chan_gtalk and res_jabber for GTalk support,+libiksemel,/etc/asterisk/gtalk.conf /etc/asterisk/jabber.conf,gtalk.conf jabber.conf,chan_gtalk res_jabber,))
|
||||||
$(eval $(call BuildAsterisk18Module,chan-iax2,IAX2 channel,An implementation of IAX2 channel,+asterisk18-res-timing-timerfd,/etc/asterisk/iax.conf /etc/asterisk/iaxprov.conf,iax.conf iaxprov.conf,chan_iax2,))
|
$(eval $(call BuildAsterisk18Module,chan-iax2,IAX2 channel,An implementation of IAX2 channel,+asterisk18-res-timing-timerfd,/etc/asterisk/iax.conf /etc/asterisk/iaxprov.conf,iax.conf iaxprov.conf,chan_iax2,))
|
||||||
$(eval $(call BuildAsterisk18Module,chan-lantiq,Lantiq TAPI channel,An implementation of Lantiq TAPI channel,@TARGET_lantiq @!TARGET_lantiq_xrx200 +kmod-ltq-vmmc,/etc/asterisk/lantiq.conf,lantiq.conf,chan_lantiq,))
|
$(eval $(call BuildAsterisk18Module,chan-lantiq,Lantiq TAPI channel,An implementation of Lantiq TAPI channel,@TARGET_lantiq @!TARGET_lantiq_xrx200 +kmod-ltq-vmmc,/etc/asterisk/lantiq.conf,lantiq.conf,chan_lantiq,))
|
||||||
$(eval $(call BuildAsterisk18Module,chan-local,Local proxy channel,An implementation of local proxy channel,,,,chan_local,))
|
$(eval $(call BuildAsterisk18Module,chan-local,Local proxy channel,An implementation of local proxy channel,,,,chan_local,))
|
||||||
|
@ -369,6 +398,7 @@ $(eval $(call BuildAsterisk18Module,res-phoneprov,Phone Provisioning,Phone provi
|
||||||
$(eval $(call BuildAsterisk18Module,res-pktccops,Provide PacketCable COPS,simple client/server model for supporting policy control over QoS signaling protocols,,/etc/asterisk/res_pktccops.conf,res_pktccops.conf,res_pktccops,))
|
$(eval $(call BuildAsterisk18Module,res-pktccops,Provide PacketCable COPS,simple client/server model for supporting policy control over QoS signaling protocols,,/etc/asterisk/res_pktccops.conf,res_pktccops.conf,res_pktccops,))
|
||||||
$(eval $(call BuildAsterisk18Module,res-smdi,Provide SMDI,Simple Message Desk Interface capability,,/etc/asterisk/smdi.conf,smdi.conf,res_smdi,))
|
$(eval $(call BuildAsterisk18Module,res-smdi,Provide SMDI,Simple Message Desk Interface capability,,/etc/asterisk/smdi.conf,smdi.conf,res_smdi,))
|
||||||
$(eval $(call BuildAsterisk18Module,res-srtp,SRTP,Secure RTP,+libsrtp,,,res_srtp,))
|
$(eval $(call BuildAsterisk18Module,res-srtp,SRTP,Secure RTP,+libsrtp,,,res_srtp,))
|
||||||
|
$(eval $(call BuildAsterisk18Module,res-timing-dahdi,DAHDI Timing Interface,,+asterisk18-chan-dahdi,,,res_timing_dahdi,))
|
||||||
$(eval $(call BuildAsterisk18Module,res-timing-pthread,pthread Timing Interface,,,,,res_timing_pthread,))
|
$(eval $(call BuildAsterisk18Module,res-timing-pthread,pthread Timing Interface,,,,,res_timing_pthread,))
|
||||||
$(eval $(call BuildAsterisk18Module,res-timing-timerfd,Timerfd Timing Interface,,,,,res_timing_timerfd,))
|
$(eval $(call BuildAsterisk18Module,res-timing-timerfd,Timerfd Timing Interface,,,,,res_timing_timerfd,))
|
||||||
$(eval $(call BuildAsterisk18Module,voicemail,Voicemail,voicemail related modules,,/etc/asterisk/voicemail.conf,voicemail.conf,*voicemail res_adsi res_smdi,vm-*))
|
$(eval $(call BuildAsterisk18Module,voicemail,Voicemail,voicemail related modules,,/etc/asterisk/voicemail.conf,voicemail.conf,*voicemail res_adsi res_smdi,vm-*))
|
||||||
|
|
162
net/asterisk-1.8.x/patches/900-revert-r416994.patch
Normal file
162
net/asterisk-1.8.x/patches/900-revert-r416994.patch
Normal file
|
@ -0,0 +1,162 @@
|
||||||
|
Index: asterisk-1.8.32.3/autoconf/ast_ext_tool_check.m4
|
||||||
|
===================================================================
|
||||||
|
--- asterisk-1.8.32.3.orig/autoconf/ast_ext_tool_check.m4
|
||||||
|
+++ asterisk-1.8.32.3/autoconf/ast_ext_tool_check.m4
|
||||||
|
@@ -5,37 +5,39 @@
|
||||||
|
# AST_EXT_TOOL_CHECK([package], [tool name], [--cflags], [--libs], [includes], [expression])
|
||||||
|
AC_DEFUN([AST_EXT_TOOL_CHECK],
|
||||||
|
[
|
||||||
|
- if test "x${PBX_$1}" != "x1" -a "${USE_$1}" != "no"; then
|
||||||
|
- PBX_$1=0
|
||||||
|
- AC_PATH_TOOL(CONFIG_$1, $2, No, [${$1_DIR}/bin:$PATH])
|
||||||
|
- if test ! "x${CONFIG_$1}" = xNo; then
|
||||||
|
- if test x"$3" = x ; then A=--cflags ; else A="$3" ; fi
|
||||||
|
- $1_INCLUDE=$(${CONFIG_$1} $A)
|
||||||
|
- $1_INCLUDE=$(echo ${$1_INCLUDE} | $SED -e "s|-I|-I${$1_DIR}|g")
|
||||||
|
-
|
||||||
|
- if test x"$4" = x ; then A=--libs ; else A="$4" ; fi
|
||||||
|
- $1_LIB=$(${CONFIG_$1} $A)
|
||||||
|
- $1_LIB=$(echo ${$1_LIB} | $SED -e "s|-L|-L${$1_DIR}|g")
|
||||||
|
-
|
||||||
|
- if test x"$5" != x ; then
|
||||||
|
- saved_cppflags="${CPPFLAGS}"
|
||||||
|
- CPPFLAGS="${CPPFLAGS} ${$1_INCLUDE}"
|
||||||
|
+ if test "x${PBX_$1}" != "x1" -a "${USE_$1}" != "no"; then
|
||||||
|
+ PBX_$1=0
|
||||||
|
+ AC_PATH_TOOL(CONFIG_$1, $2, No, [${$1_DIR}/bin:$PATH])
|
||||||
|
+ if test ! "x${CONFIG_$1}" = xNo; then
|
||||||
|
+ if test x"$3" = x ; then A=--cflags ; else A="$3" ; fi
|
||||||
|
+ $1_INCLUDE=$(${CONFIG_$1} $A)
|
||||||
|
+ if test x"$4" = x ; then A=--libs ; else A="$4" ; fi
|
||||||
|
+ $1_LIB=$(${CONFIG_$1} $A)
|
||||||
|
+ if test x"$5" != x ; then
|
||||||
|
+ saved_cppflags="${CPPFLAGS}"
|
||||||
|
+ if test "x${$1_DIR}" != "x"; then
|
||||||
|
+ $1_INCLUDE="-I${$1_DIR}/include"
|
||||||
|
+ fi
|
||||||
|
+ CPPFLAGS="${CPPFLAGS} ${$1_INCLUDE}"
|
||||||
|
|
||||||
|
- saved_libs="${LIBS}"
|
||||||
|
- LIBS=${$1_LIB}
|
||||||
|
+ saved_libs="${LIBS}"
|
||||||
|
+ LIBS="${$1_LIB}"
|
||||||
|
|
||||||
|
- AC_LINK_IFELSE(
|
||||||
|
- [ AC_LANG_PROGRAM( [ $5 ], [ $6; ])],
|
||||||
|
- [ PBX_$1=1 AC_DEFINE([HAVE_$1], 1,
|
||||||
|
- [Define if your system has the $1 headers.])],
|
||||||
|
- []
|
||||||
|
- )
|
||||||
|
- CPPFLAGS="${saved_cppflags}"
|
||||||
|
- LIBS="${saved_libs}"
|
||||||
|
- else
|
||||||
|
- PBX_$1=1
|
||||||
|
- AC_DEFINE([HAVE_$1], 1, [Define if your system has the $1 libraries.])
|
||||||
|
- fi
|
||||||
|
- fi
|
||||||
|
+ AC_LINK_IFELSE(
|
||||||
|
+ [ AC_LANG_PROGRAM( [ $5 ],
|
||||||
|
+ [ $6; ]
|
||||||
|
+ )],
|
||||||
|
+ [ PBX_$1=1
|
||||||
|
+ AC_DEFINE([HAVE_$1], 1, [Define if your system has the $1 headers.])
|
||||||
|
+ ],
|
||||||
|
+ []
|
||||||
|
+ )
|
||||||
|
+ CPPFLAGS="${saved_cppflags}"
|
||||||
|
+ LIBS="${saved_libs}"
|
||||||
|
+ else
|
||||||
|
+ PBX_$1=1
|
||||||
|
+ AC_DEFINE([HAVE_$1], 1, [Define if your system has the $1 libraries.])
|
||||||
|
+ fi
|
||||||
|
fi
|
||||||
|
+ fi
|
||||||
|
])
|
||||||
|
Index: asterisk-1.8.32.3/configure
|
||||||
|
===================================================================
|
||||||
|
--- asterisk-1.8.32.3.orig/configure
|
||||||
|
+++ asterisk-1.8.32.3/configure
|
||||||
|
@@ -12663,11 +12663,9 @@ fi
|
||||||
|
if test ! "x${CONFIG_LIBXML2}" = xNo; then
|
||||||
|
if test x"" = x ; then A=--cflags ; else A="" ; fi
|
||||||
|
LIBXML2_INCLUDE=$(${CONFIG_LIBXML2} $A)
|
||||||
|
- LIBXML2_INCLUDE=$(echo ${LIBXML2_INCLUDE} | $SED -e "s|-I|-I${LIBXML2_DIR}|g")
|
||||||
|
|
||||||
|
if test x"" = x ; then A=--libs ; else A="" ; fi
|
||||||
|
LIBXML2_LIB=$(${CONFIG_LIBXML2} $A)
|
||||||
|
- LIBXML2_LIB=$(echo ${LIBXML2_LIB} | $SED -e "s|-L|-L${LIBXML2_DIR}|g")
|
||||||
|
|
||||||
|
if test x"#include <libxml/tree.h>
|
||||||
|
#include <libxml/parser.h>" != x ; then
|
||||||
|
@@ -21027,11 +21025,9 @@ fi
|
||||||
|
if test ! "x${CONFIG_MYSQLCLIENT}" = xNo; then
|
||||||
|
if test x"" = x ; then A=--cflags ; else A="" ; fi
|
||||||
|
MYSQLCLIENT_INCLUDE=$(${CONFIG_MYSQLCLIENT} $A)
|
||||||
|
- MYSQLCLIENT_INCLUDE=$(echo ${MYSQLCLIENT_INCLUDE} | $SED -e "s|-I|-I${MYSQLCLIENT_DIR}|g")
|
||||||
|
|
||||||
|
if test x"" = x ; then A=--libs ; else A="" ; fi
|
||||||
|
MYSQLCLIENT_LIB=$(${CONFIG_MYSQLCLIENT} $A)
|
||||||
|
- MYSQLCLIENT_LIB=$(echo ${MYSQLCLIENT_LIB} | $SED -e "s|-L|-L${MYSQLCLIENT_DIR}|g")
|
||||||
|
|
||||||
|
if test x"" != x ; then
|
||||||
|
saved_cppflags="${CPPFLAGS}"
|
||||||
|
@@ -21281,11 +21277,9 @@ fi
|
||||||
|
if test ! "x${CONFIG_NEON}" = xNo; then
|
||||||
|
if test x"" = x ; then A=--cflags ; else A="" ; fi
|
||||||
|
NEON_INCLUDE=$(${CONFIG_NEON} $A)
|
||||||
|
- NEON_INCLUDE=$(echo ${NEON_INCLUDE} | $SED -e "s|-I|-I${NEON_DIR}|g")
|
||||||
|
|
||||||
|
if test x"" = x ; then A=--libs ; else A="" ; fi
|
||||||
|
NEON_LIB=$(${CONFIG_NEON} $A)
|
||||||
|
- NEON_LIB=$(echo ${NEON_LIB} | $SED -e "s|-L|-L${NEON_DIR}|g")
|
||||||
|
|
||||||
|
if test x"" != x ; then
|
||||||
|
saved_cppflags="${CPPFLAGS}"
|
||||||
|
@@ -21430,11 +21424,9 @@ fi
|
||||||
|
if test ! "x${CONFIG_NEON29}" = xNo; then
|
||||||
|
if test x"" = x ; then A=--cflags ; else A="" ; fi
|
||||||
|
NEON29_INCLUDE=$(${CONFIG_NEON29} $A)
|
||||||
|
- NEON29_INCLUDE=$(echo ${NEON29_INCLUDE} | $SED -e "s|-I|-I${NEON29_DIR}|g")
|
||||||
|
|
||||||
|
if test x"--libs" = x ; then A=--libs ; else A="--libs" ; fi
|
||||||
|
NEON29_LIB=$(${CONFIG_NEON29} $A)
|
||||||
|
- NEON29_LIB=$(echo ${NEON29_LIB} | $SED -e "s|-L|-L${NEON29_DIR}|g")
|
||||||
|
|
||||||
|
if test x"#include <ne_auth.h>" != x ; then
|
||||||
|
saved_cppflags="${CPPFLAGS}"
|
||||||
|
@@ -21581,11 +21573,9 @@ fi
|
||||||
|
if test ! "x${CONFIG_NETSNMP}" = xNo; then
|
||||||
|
if test x"" = x ; then A=--cflags ; else A="" ; fi
|
||||||
|
NETSNMP_INCLUDE=$(${CONFIG_NETSNMP} $A)
|
||||||
|
- NETSNMP_INCLUDE=$(echo ${NETSNMP_INCLUDE} | $SED -e "s|-I|-I${NETSNMP_DIR}|g")
|
||||||
|
|
||||||
|
if test x"--agent-libs" = x ; then A=--libs ; else A="--agent-libs" ; fi
|
||||||
|
NETSNMP_LIB=$(${CONFIG_NETSNMP} $A)
|
||||||
|
- NETSNMP_LIB=$(echo ${NETSNMP_LIB} | $SED -e "s|-L|-L${NETSNMP_DIR}|g")
|
||||||
|
|
||||||
|
if test x"#include <net-snmp/net-snmp-config.h>
|
||||||
|
#include <net-snmp/net-snmp-includes.h>
|
||||||
|
@@ -28255,11 +28245,9 @@ fi
|
||||||
|
if test ! "x${CONFIG_GMIME}" = xNo; then
|
||||||
|
if test x"" = x ; then A=--cflags ; else A="" ; fi
|
||||||
|
GMIME_INCLUDE=$(${CONFIG_GMIME} $A)
|
||||||
|
- GMIME_INCLUDE=$(echo ${GMIME_INCLUDE} | $SED -e "s|-I|-I${GMIME_DIR}|g")
|
||||||
|
|
||||||
|
if test x"" = x ; then A=--libs ; else A="" ; fi
|
||||||
|
GMIME_LIB=$(${CONFIG_GMIME} $A)
|
||||||
|
- GMIME_LIB=$(echo ${GMIME_LIB} | $SED -e "s|-L|-L${GMIME_DIR}|g")
|
||||||
|
|
||||||
|
if test x"#include <gmime/gmime.h>" != x ; then
|
||||||
|
saved_cppflags="${CPPFLAGS}"
|
||||||
|
@@ -29377,11 +29365,9 @@ fi
|
||||||
|
if test ! "x${CONFIG_SDL}" = xNo; then
|
||||||
|
if test x"" = x ; then A=--cflags ; else A="" ; fi
|
||||||
|
SDL_INCLUDE=$(${CONFIG_SDL} $A)
|
||||||
|
- SDL_INCLUDE=$(echo ${SDL_INCLUDE} | $SED -e "s|-I|-I${SDL_DIR}|g")
|
||||||
|
|
||||||
|
if test x"" = x ; then A=--libs ; else A="" ; fi
|
||||||
|
SDL_LIB=$(${CONFIG_SDL} $A)
|
||||||
|
- SDL_LIB=$(echo ${SDL_LIB} | $SED -e "s|-L|-L${SDL_DIR}|g")
|
||||||
|
|
||||||
|
if test x"" != x ; then
|
||||||
|
saved_cppflags="${CPPFLAGS}"
|
|
@ -1,78 +0,0 @@
|
||||||
#
|
|
||||||
# Copyright (C) 2013 OpenWrt.org
|
|
||||||
#
|
|
||||||
# This is free software, licensed under the GNU General Public License v2.
|
|
||||||
# See /LICENSE for more information.
|
|
||||||
#
|
|
||||||
|
|
||||||
include $(TOPDIR)/rules.mk
|
|
||||||
|
|
||||||
PKG_NAME:=asterisk11-chan-dongle
|
|
||||||
PKG_VERSION:=1.1r35
|
|
||||||
PKG_REV:=28a46567a88cebdc365db6f294e682246fd2dd7b
|
|
||||||
PKG_RELEASE:=3
|
|
||||||
|
|
||||||
PKG_SOURCE_SUBDIR:=asterisk11-chan-dongle-$(PKG_VERSION)
|
|
||||||
PKG_SOURCE:=$(PKG_SOURCE_SUBDIR).tar.gz
|
|
||||||
PKG_SOURCE_URL:=https://github.com/jstasiak/asterisk-chan-dongle.git
|
|
||||||
PKG_SOURCE_PROTO:=git
|
|
||||||
PKG_SOURCE_VERSION:=$(PKG_REV)
|
|
||||||
|
|
||||||
PKG_BUILD_DIR=$(BUILD_DIR)/$(PKG_SOURCE_SUBDIR)
|
|
||||||
|
|
||||||
PKG_FIXUP:=autoreconf
|
|
||||||
|
|
||||||
PKG_LICENSE:=GPL-2.0
|
|
||||||
PKG_LICENSE_FILES:=COPYRIGHT.txt LICENSE.txt
|
|
||||||
PKG_MAINTAINER:=Jiri Slachta <slachta@cesnet.cz>
|
|
||||||
|
|
||||||
include $(INCLUDE_DIR)/package.mk
|
|
||||||
|
|
||||||
define Package/asterisk11-chan-dongle
|
|
||||||
SUBMENU:=Telephony
|
|
||||||
SECTION:=net
|
|
||||||
CATEGORY:=Network
|
|
||||||
URL:=https://code.google.com/p/asterisk-chan-dongle/
|
|
||||||
DEPENDS:= asterisk11 +libiconv-full +kmod-usb-acm +kmod-usb-serial +kmod-usb-serial-option +libusb-1.0 +usb-modeswitch
|
|
||||||
TITLE:=Huawei UMTS 3G dongle support
|
|
||||||
endef
|
|
||||||
|
|
||||||
define Package/asterisk11-chan-dongle/description
|
|
||||||
Asterisk channel driver for Huawei UMTS 3G dongle.
|
|
||||||
endef
|
|
||||||
|
|
||||||
MAKE_ARGS:= \
|
|
||||||
CC="$(TARGET_CC)" \
|
|
||||||
LD="$(TARGET_CC)" \
|
|
||||||
CFLAGS="$(TARGET_CFLAGS) -DASTERISK_VERSION_NUM=110000 -DLOW_MEMORY -D_XOPEN_SOURCE=600 $(TARGET_CPPFLAGS) -I$(STAGING_DIR)/usr/lib/libiconv-full/include -I$(STAGING_DIR)/usr/include/asterisk-11/include -DHAVE_CONFIG_H -I. -fPIC" \
|
|
||||||
LDFLAGS="$(TARGET_LDFLAGS) -L$(STAGING_DIR)/usr/lib/libiconv-full/lib -liconv" \
|
|
||||||
DESTDIR="$(PKG_INSTALL_DIR)/usr/lib/asterisk/modules"
|
|
||||||
|
|
||||||
CONFIGURE_VARS += \
|
|
||||||
ac_cv_type_size_t=yes \
|
|
||||||
ac_cv_type_ssize_t=yes
|
|
||||||
|
|
||||||
define Build/Configure
|
|
||||||
$(call Build/Configure/Default, \
|
|
||||||
--with-asterisk=$(STAGING_DIR)/usr/include/asterisk-11/include \
|
|
||||||
$(MAKE_ARGS) \
|
|
||||||
)
|
|
||||||
endef
|
|
||||||
|
|
||||||
define Build/Compile
|
|
||||||
mkdir -p $(PKG_INSTALL_DIR)/usr/lib/asterisk/modules
|
|
||||||
$(MAKE) -C "$(PKG_BUILD_DIR)" $(MAKE_ARGS) all install
|
|
||||||
endef
|
|
||||||
|
|
||||||
define Package/asterisk11-chan-dongle/conffiles
|
|
||||||
/etc/asterisk/dongle.conf
|
|
||||||
endef
|
|
||||||
|
|
||||||
define Package/asterisk11-chan-dongle/install
|
|
||||||
$(INSTALL_DIR) $(1)/etc/asterisk
|
|
||||||
$(INSTALL_DATA) $(PKG_BUILD_DIR)/etc/dongle.conf $(1)/etc/asterisk/
|
|
||||||
$(INSTALL_DIR) $(1)/usr/lib/asterisk/modules
|
|
||||||
$(INSTALL_BIN) $(PKG_INSTALL_DIR)/usr/lib/asterisk/modules/chan_dongle.so $(1)/usr/lib/asterisk/modules/
|
|
||||||
endef
|
|
||||||
|
|
||||||
$(eval $(call BuildPackage,asterisk11-chan-dongle))
|
|
|
@ -1,64 +0,0 @@
|
||||||
--- a/app.c
|
|
||||||
+++ b/app.c
|
|
||||||
@@ -114,7 +114,44 @@
|
|
||||||
return !status;
|
|
||||||
}
|
|
||||||
|
|
||||||
+static int app_send_ussd_exec (attribute_unused struct ast_channel* channel, const char* data)
|
|
||||||
+{
|
|
||||||
+ char* parse;
|
|
||||||
+ const char* msg;
|
|
||||||
+ int status;
|
|
||||||
+ void * msgid;
|
|
||||||
|
|
||||||
+ AST_DECLARE_APP_ARGS (args,
|
|
||||||
+ AST_APP_ARG (device);
|
|
||||||
+ AST_APP_ARG (ussd);
|
|
||||||
+ );
|
|
||||||
+
|
|
||||||
+ if (ast_strlen_zero (data))
|
|
||||||
+ {
|
|
||||||
+ return -1;
|
|
||||||
+ }
|
|
||||||
+
|
|
||||||
+ parse = ast_strdupa (data);
|
|
||||||
+
|
|
||||||
+ AST_STANDARD_APP_ARGS (args, parse);
|
|
||||||
+
|
|
||||||
+ if (ast_strlen_zero (args.device))
|
|
||||||
+ {
|
|
||||||
+ ast_log (LOG_ERROR, "NULL device for ussd -- USSD will not be sent\n");
|
|
||||||
+ return -1;
|
|
||||||
+ }
|
|
||||||
+
|
|
||||||
+ if (ast_strlen_zero (args.ussd))
|
|
||||||
+ {
|
|
||||||
+ ast_log (LOG_ERROR, "NULL ussd command -- USSD will not be sent\n");
|
|
||||||
+ return -1;
|
|
||||||
+ }
|
|
||||||
+
|
|
||||||
+ msg = send_ussd(args.device, args.ussd, &status, &msgid);
|
|
||||||
+ if(!status)
|
|
||||||
+ ast_log (LOG_ERROR, "[%s] %s with id %p\n", args.device, msg, msgid);
|
|
||||||
+ return !status;
|
|
||||||
+}
|
|
||||||
|
|
||||||
static const struct dongle_application
|
|
||||||
{
|
|
||||||
@@ -144,7 +181,15 @@
|
|
||||||
" Message - text of the message\n"
|
|
||||||
" Validity - Validity period in minutes\n"
|
|
||||||
" Report - Boolean flag for report request\n"
|
|
||||||
- }
|
|
||||||
+ },
|
|
||||||
+ {
|
|
||||||
+ "DongleSendUSSD",
|
|
||||||
+ app_send_ussd_exec,
|
|
||||||
+ "DongleSendUSSD(Device,USSD)",
|
|
||||||
+ "DongleSendUSSD(Device,USSD)\n"
|
|
||||||
+ " Device - Id of device from dongle.conf\n"
|
|
||||||
+ " USSD - ussd command\n"
|
|
||||||
+ }
|
|
||||||
};
|
|
||||||
|
|
||||||
#if ASTERISK_VERSION_NUM >= 10800
|
|
|
@ -1,6 +1,6 @@
|
||||||
#
|
#
|
||||||
# Copyright (C) 2015 OpenWrt.org
|
# Copyright (C) 2016 OpenWrt.org
|
||||||
# Copyright (C) 2015 Cesnet, z.s.p.o.
|
# Copyright (C) 2016 Cesnet, z.s.p.o.
|
||||||
#
|
#
|
||||||
# This is free software, licensed under the GNU General Public License v2.
|
# This is free software, licensed under the GNU General Public License v2.
|
||||||
# See /LICENSE for more information.
|
# See /LICENSE for more information.
|
||||||
|
@ -9,18 +9,19 @@
|
||||||
include $(TOPDIR)/rules.mk
|
include $(TOPDIR)/rules.mk
|
||||||
|
|
||||||
PKG_NAME:=asterisk11
|
PKG_NAME:=asterisk11
|
||||||
PKG_VERSION:=11.16.0
|
PKG_VERSION:=11.22.0
|
||||||
PKG_RELEASE:=4
|
PKG_RELEASE:=2
|
||||||
|
|
||||||
PKG_SOURCE:=asterisk-$(PKG_VERSION).tar.gz
|
PKG_SOURCE:=asterisk-$(PKG_VERSION).tar.gz
|
||||||
PKG_SOURCE_URL:=http://downloads.asterisk.org/pub/telephony/asterisk/releases/
|
PKG_SOURCE_URL:=http://downloads.asterisk.org/pub/telephony/asterisk/releases/
|
||||||
PKG_MD5SUM:=de06d4ac0d1ba531c4c18805a9d5a18d
|
PKG_MD5SUM:=35870c34fadbd2bcb284bd8521c6e689
|
||||||
|
|
||||||
|
PKG_BUILD_DIR:=$(BUILD_DIR)/asterisk-$(PKG_VERSION)
|
||||||
|
PKG_BUILD_DEPENDS:=libxml2/host
|
||||||
|
|
||||||
PKG_LICENSE:=GPL-2.0
|
PKG_LICENSE:=GPL-2.0
|
||||||
PKG_LICENSE_FILES:=COPYING LICENSE
|
PKG_LICENSE_FILES:=COPYING LICENSE
|
||||||
PKG_MAINTAINER:=Jiri Slachta <slachta@cesnet.cz>
|
PKG_MAINTAINER:=Jiri Slachta <jiri@slachta.eu>
|
||||||
|
|
||||||
PKG_BUILD_DIR=$(BUILD_DIR)/asterisk-$(PKG_VERSION)
|
|
||||||
|
|
||||||
include $(INCLUDE_DIR)/package.mk
|
include $(INCLUDE_DIR)/package.mk
|
||||||
|
|
||||||
|
@ -79,7 +80,7 @@ define Package/asterisk11/Default
|
||||||
SECTION:=net
|
SECTION:=net
|
||||||
CATEGORY:=Network
|
CATEGORY:=Network
|
||||||
URL:=http://www.asterisk.org/
|
URL:=http://www.asterisk.org/
|
||||||
MAINTAINER:=Jiri Slachta <slachta@cesnet.cz>
|
MAINTAINER:=Jiri Slachta <jiri@slachta.eu>
|
||||||
endef
|
endef
|
||||||
|
|
||||||
define Package/asterisk11/Default/description
|
define Package/asterisk11/Default/description
|
||||||
|
@ -91,7 +92,7 @@ endef
|
||||||
|
|
||||||
define Package/asterisk11
|
define Package/asterisk11
|
||||||
$(call Package/asterisk11/Default)
|
$(call Package/asterisk11/Default)
|
||||||
TITLE:=Complete open source PBX, v11.x
|
TITLE:=Complete open source PBX, v$(PKG_VERSION)
|
||||||
MENU:=1
|
MENU:=1
|
||||||
DEPENDS:=+libopenssl +libncurses +libpopt +libpthread +libsqlite3 +librt +libuuid +zlib @!TARGET_avr32
|
DEPENDS:=+libopenssl +libncurses +libpopt +libpthread +libsqlite3 +librt +libuuid +zlib @!TARGET_avr32
|
||||||
endef
|
endef
|
||||||
|
@ -142,6 +143,20 @@ $(foreach m,$(AST_EMB_MODULES),$(call Package/asterisk11/install/module,$(1),$(m
|
||||||
$(INSTALL_BIN) ./files/asterisk.init $(1)/etc/init.d/asterisk
|
$(INSTALL_BIN) ./files/asterisk.init $(1)/etc/init.d/asterisk
|
||||||
endef
|
endef
|
||||||
|
|
||||||
|
define Package/$(PKG_NAME)/postinst
|
||||||
|
#!/bin/sh
|
||||||
|
if [ -z "$${IPKG_INSTROOT}" ]; then
|
||||||
|
echo
|
||||||
|
echo "o-------------------------------------------------------------------o"
|
||||||
|
echo "| Asterisk 11 WARNING |"
|
||||||
|
echo "o-------------------------------------------------------------------o"
|
||||||
|
echo "| Asterisk 11 is end-of-life. You should upgrade to Asterisk 13. |"
|
||||||
|
echo "o-------------------------------------------------------------=^_^=-o"
|
||||||
|
echo
|
||||||
|
fi
|
||||||
|
exit 0
|
||||||
|
endef
|
||||||
|
|
||||||
define Package/asterisk11-sounds
|
define Package/asterisk11-sounds
|
||||||
$(call Package/asterisk11/Default)
|
$(call Package/asterisk11/Default)
|
||||||
TITLE:=Sounds support
|
TITLE:=Sounds support
|
||||||
|
@ -162,10 +177,12 @@ endef
|
||||||
ifneq ($(SDK)$(CONFIG_PACKAGE_asterisk11-chan-dahdi),)
|
ifneq ($(SDK)$(CONFIG_PACKAGE_asterisk11-chan-dahdi),)
|
||||||
CONFIGURE_ARGS+= \
|
CONFIGURE_ARGS+= \
|
||||||
--with-dahdi="$(STAGING_DIR)/usr" \
|
--with-dahdi="$(STAGING_DIR)/usr" \
|
||||||
|
--with-pri="$(STAGING_DIR)/usr" \
|
||||||
--with-tonezone="$(STAGING_DIR)/usr"
|
--with-tonezone="$(STAGING_DIR)/usr"
|
||||||
else
|
else
|
||||||
CONFIGURE_ARGS+= \
|
CONFIGURE_ARGS+= \
|
||||||
--without-dahdi \
|
--without-dahdi \
|
||||||
|
--without-pri \
|
||||||
--without-tonezone
|
--without-tonezone
|
||||||
endif
|
endif
|
||||||
|
|
||||||
|
@ -248,11 +265,12 @@ CONFIGURE_ARGS+= \
|
||||||
--without-nbs \
|
--without-nbs \
|
||||||
--with-ncurses="$(STAGING_DIR)/usr" \
|
--with-ncurses="$(STAGING_DIR)/usr" \
|
||||||
--without-netsnmp \
|
--without-netsnmp \
|
||||||
|
--without-neon \
|
||||||
|
--without-neon29 \
|
||||||
--without-newt \
|
--without-newt \
|
||||||
--without-ogg \
|
--without-ogg \
|
||||||
--without-osptk \
|
--without-osptk \
|
||||||
--with-popt="$(STAGING_DIR)/usr" \
|
--with-popt="$(STAGING_DIR)/usr" \
|
||||||
--without-pri \
|
|
||||||
--without-pwlib \
|
--without-pwlib \
|
||||||
--without-radius \
|
--without-radius \
|
||||||
--without-sdl \
|
--without-sdl \
|
||||||
|
@ -269,11 +287,19 @@ CONFIGURE_ARGS+= \
|
||||||
--with-sounds-cache="$(DL_DIR)" \
|
--with-sounds-cache="$(DL_DIR)" \
|
||||||
--disable-xmldoc
|
--disable-xmldoc
|
||||||
|
|
||||||
define Build/Prepare
|
CONFIGURE_VARS += \
|
||||||
$(call Build/Prepare/Default)
|
ac_cv_path_ac_pt_CONFIG_LIBXML2=$(STAGING_DIR)/host/bin/xml2-config
|
||||||
endef
|
|
||||||
|
AST_MENUSELECT_OPTS = \
|
||||||
|
--without-newt \
|
||||||
|
--without-curses \
|
||||||
|
--with-ncurses="$(STAGING_DIR_HOST)/usr" \
|
||||||
|
--with-libxml2="$(STAGING_DIR_HOST)/usr"
|
||||||
|
|
||||||
define Build/Configure
|
define Build/Configure
|
||||||
|
(cd $(PKG_BUILD_DIR); \
|
||||||
|
./bootstrap.sh; \
|
||||||
|
);
|
||||||
echo "export CFLAGS += $(FPIC) $(TARGET_CFLAGS) $(EXTRA_CFLAGS)"\
|
echo "export CFLAGS += $(FPIC) $(TARGET_CFLAGS) $(EXTRA_CFLAGS)"\
|
||||||
" $(TARGET_CPPFLAGS) $(EXTRA_CPPFLAGS)"\
|
" $(TARGET_CPPFLAGS) $(EXTRA_CPPFLAGS)"\
|
||||||
> $(PKG_BUILD_DIR)/res/pjproject/user.mak;
|
> $(PKG_BUILD_DIR)/res/pjproject/user.mak;
|
||||||
|
@ -284,11 +310,20 @@ define Build/Configure
|
||||||
" $(TARGET_CPPFLAGS) $(EXTRA_CPPFLAGS)"\
|
" $(TARGET_CPPFLAGS) $(EXTRA_CPPFLAGS)"\
|
||||||
>> $(PKG_BUILD_DIR)/res/pjproject/user.mak;
|
>> $(PKG_BUILD_DIR)/res/pjproject/user.mak;
|
||||||
$(call Build/Configure/Default,,$(SITE_VARS))
|
$(call Build/Configure/Default,,$(SITE_VARS))
|
||||||
|
(cd $(PKG_BUILD_DIR)/menuselect; \
|
||||||
|
./configure \
|
||||||
|
$(HOST_CONFIGURE_ARGS) \
|
||||||
|
$(AST_MENUSELECT_OPTS) \
|
||||||
|
LDFLAGS="$(HOST_LDFLAGS) -lxml2" \
|
||||||
|
CFLAGS="$(HOST_CFLAGS) -I$(STAGING_DIR_HOST)/include/libxml2" \
|
||||||
|
);
|
||||||
endef
|
endef
|
||||||
|
|
||||||
define Build/Compile
|
define Build/Compile
|
||||||
$(MAKE) -C "$(PKG_BUILD_DIR)" \
|
$(MAKE) -C "$(PKG_BUILD_DIR)/menuselect" \
|
||||||
include/asterisk/version.h \
|
CFLAGS="$(HOST_CFLAGS) -I$(STAGING_DIR_HOST)/include/libxml2" \
|
||||||
|
LDFLAGS="$(HOST_LDFLAGS) -lxml2"
|
||||||
|
$(MAKE) -C "$(PKG_BUILD_DIR)" include/asterisk/version.h \
|
||||||
include/asterisk/buildopts.h defaults.h \
|
include/asterisk/buildopts.h defaults.h \
|
||||||
makeopts.embed_rules
|
makeopts.embed_rules
|
||||||
ASTCFLAGS="$(EXTRA_CFLAGS) -DLOW_MEMORY"
|
ASTCFLAGS="$(EXTRA_CFLAGS) -DLOW_MEMORY"
|
||||||
|
@ -332,6 +367,7 @@ $(eval $(call BuildAsterisk11Module,app-alarmreceiver,Alarm receiver,Central Sta
|
||||||
$(eval $(call BuildAsterisk11Module,app-authenticate,Authenticate commands,Execute arbitrary authenticate commands,,,,app_authenticate,))
|
$(eval $(call BuildAsterisk11Module,app-authenticate,Authenticate commands,Execute arbitrary authenticate commands,,,,app_authenticate,))
|
||||||
$(eval $(call BuildAsterisk11Module,app-confbridge,ConfBridge,Software bridge for multi-party audio conferencing,,/etc/asterisk/confbridge.conf,confbridge.conf,app_confbridge bridge_builtin_features bridge_multiplexed bridge_simple bridge_softmix chan_bridge,))
|
$(eval $(call BuildAsterisk11Module,app-confbridge,ConfBridge,Software bridge for multi-party audio conferencing,,/etc/asterisk/confbridge.conf,confbridge.conf,app_confbridge bridge_builtin_features bridge_multiplexed bridge_simple bridge_softmix chan_bridge,))
|
||||||
$(eval $(call BuildAsterisk11Module,app-dahdiras,Execute an ISDN RAS,support for executing an ISDN RAS using DAHDI,+asterisk11-chan-dahdi,,,app_dahdiras,))
|
$(eval $(call BuildAsterisk11Module,app-dahdiras,Execute an ISDN RAS,support for executing an ISDN RAS using DAHDI,+asterisk11-chan-dahdi,,,app_dahdiras,))
|
||||||
|
$(eval $(call BuildAsterisk11Module,app-directory,Provide a directory of extensions,provides a directory of extensions,,,,app_directory,))
|
||||||
$(eval $(call BuildAsterisk11Module,app-directed_pickup,Directed call pickup,support for directed call pickup,,,,app_directed_pickup,))
|
$(eval $(call BuildAsterisk11Module,app-directed_pickup,Directed call pickup,support for directed call pickup,,,,app_directed_pickup,))
|
||||||
$(eval $(call BuildAsterisk11Module,app-disa,Direct Inward System Access,Direct Inward System Access,,,,app_disa,))
|
$(eval $(call BuildAsterisk11Module,app-disa,Direct Inward System Access,Direct Inward System Access,,,,app_disa,))
|
||||||
$(eval $(call BuildAsterisk11Module,app-exec,Exec application,support for application execution,,,,app_exec,))
|
$(eval $(call BuildAsterisk11Module,app-exec,Exec application,support for application execution,,,,app_exec,))
|
||||||
|
@ -393,10 +429,12 @@ $(eval $(call BuildAsterisk11Module,func-module,Simple module check function,Sim
|
||||||
$(eval $(call BuildAsterisk11Module,func-shell,Shell,support for shell execution,,,,func_shell,))
|
$(eval $(call BuildAsterisk11Module,func-shell,Shell,support for shell execution,,,,func_shell,))
|
||||||
$(eval $(call BuildAsterisk11Module,func-uri,URI encoding and decoding,Encodes and decodes URI-safe strings,,,,func_uri,))
|
$(eval $(call BuildAsterisk11Module,func-uri,URI encoding and decoding,Encodes and decodes URI-safe strings,,,,func_uri,))
|
||||||
$(eval $(call BuildAsterisk11Module,func-vmcount,vmcount dialplan,a vmcount dialplan function,,,,func_vmcount,))
|
$(eval $(call BuildAsterisk11Module,func-vmcount,vmcount dialplan,a vmcount dialplan function,,,,func_vmcount,))
|
||||||
|
$(eval $(call BuildAsterisk11Module,func-realtime,realtime dialplan,the realtime dialplan function,,,,func_realtime,))
|
||||||
$(eval $(call BuildAsterisk11Module,chan-agent,Agents proxy channel,an implementation of agents proxy channel,,,,chan_agent,))
|
$(eval $(call BuildAsterisk11Module,chan-agent,Agents proxy channel,an implementation of agents proxy channel,,,,chan_agent,))
|
||||||
$(eval $(call BuildAsterisk11Module,chan-dahdi,DAHDI channel,DAHDI channel support,+dahdi-tools-libtonezone +kmod-dahdi,/etc/asterisk/chan_dahdi.conf,chan_dahdi.conf,chan_dahdi,))
|
$(eval $(call BuildAsterisk11Module,chan-dahdi,DAHDI channel,DAHDI channel support,+dahdi-tools-libtonezone +kmod-dahdi +libpri,/etc/asterisk/chan_dahdi.conf,chan_dahdi.conf,chan_dahdi,))
|
||||||
$(eval $(call BuildAsterisk11Module,chan-iax2,IAX2 channel,IAX support,+asterisk11-res-timing-timerfd,/etc/asterisk/iax.conf /etc/asterisk/iaxprov.conf,iax.conf iaxprov.conf,chan_iax2,))
|
$(eval $(call BuildAsterisk11Module,chan-iax2,IAX2 channel,IAX support,+asterisk11-res-timing-timerfd,/etc/asterisk/iax.conf /etc/asterisk/iaxprov.conf,iax.conf iaxprov.conf,chan_iax2,))
|
||||||
$(eval $(call BuildAsterisk11Module,chan-mgcp,MGCP channel,the channel chan_mgcp,,/etc/asterisk/mgcp.conf,mgcp.conf,chan_mgcp,))
|
$(eval $(call BuildAsterisk11Module,chan-mgcp,MGCP channel,the channel chan_mgcp,,/etc/asterisk/mgcp.conf,mgcp.conf,chan_mgcp,))
|
||||||
|
$(eval $(call BuildAsterisk11Module,chan-motif,Jingle channel,Motif Jingle Channel Driver,+asterisk11-res-xmpp,/etc/asterisk/motif.conf /etc/asterisk/jingle.conf,motif.conf jingle.conf,chan_motif,))
|
||||||
$(eval $(call BuildAsterisk11Module,chan-ooh323,ooH323 channel,the channel chan_ooh323,,/etc/asterisk/ooh323.conf,ooh323.conf,chan_ooh323,))
|
$(eval $(call BuildAsterisk11Module,chan-ooh323,ooH323 channel,the channel chan_ooh323,,/etc/asterisk/ooh323.conf,ooh323.conf,chan_ooh323,))
|
||||||
$(eval $(call BuildAsterisk11Module,chan-skinny,Skinny channel,the channel chan_skinny,,/etc/asterisk/skinny.conf,skinny.conf,chan_skinny,))
|
$(eval $(call BuildAsterisk11Module,chan-skinny,Skinny channel,the channel chan_skinny,,/etc/asterisk/skinny.conf,skinny.conf,chan_skinny,))
|
||||||
$(eval $(call BuildAsterisk11Module,chan-unistim,Unistim channel,channel driver for the UNISTIM (Unified Networks IP Stimulus) protocol,,/etc/asterisk/unistim.conf,unistim.conf,chan_unistim,))
|
$(eval $(call BuildAsterisk11Module,chan-unistim,Unistim channel,channel driver for the UNISTIM (Unified Networks IP Stimulus) protocol,,/etc/asterisk/unistim.conf,unistim.conf,chan_unistim,))
|
||||||
|
@ -406,9 +444,12 @@ $(eval $(call BuildAsterisk11Module,pbx-ael,Asterisk Extension Logic,support for
|
||||||
$(eval $(call BuildAsterisk11Module,pbx-dundi,Dundi,provides Dundi Lookup service for Asterisk,,/etc/asterisk/dundi.conf,dundi.conf,pbx_dundi,))
|
$(eval $(call BuildAsterisk11Module,pbx-dundi,Dundi,provides Dundi Lookup service for Asterisk,,/etc/asterisk/dundi.conf,dundi.conf,pbx_dundi,))
|
||||||
$(eval $(call BuildAsterisk11Module,pbx-lua,Lua,provides Lua resources for Asterisk,+libpthread +libc +liblua,/etc/asterisk/extensions.lua,extensions.lua,pbx_lua,))
|
$(eval $(call BuildAsterisk11Module,pbx-lua,Lua,provides Lua resources for Asterisk,+libpthread +libc +liblua,/etc/asterisk/extensions.lua,extensions.lua,pbx_lua,))
|
||||||
$(eval $(call BuildAsterisk11Module,pbx-spool,Call Spool,outgoing call spool support,,,,pbx_spool,))
|
$(eval $(call BuildAsterisk11Module,pbx-spool,Call Spool,outgoing call spool support,,,,pbx_spool,))
|
||||||
|
$(eval $(call BuildAsterisk11Module,pbx-realtime,Realtime Switch,realtime switch support,,,,pbx_realtime,))
|
||||||
$(eval $(call BuildAsterisk11Module,pgsql,PostgreSQL,PostgreSQL support,+libpq,/etc/asterisk/cel_pgsql.conf /etc/asterisk/cdr_pgsql.conf /etc/asterisk/res_pgsql.conf,cel_pgsql.conf cdr_pgsql.conf res_pgsql.conf,cel_pgsql cdr_pgsql res_config_pgsql,))
|
$(eval $(call BuildAsterisk11Module,pgsql,PostgreSQL,PostgreSQL support,+libpq,/etc/asterisk/cel_pgsql.conf /etc/asterisk/cdr_pgsql.conf /etc/asterisk/res_pgsql.conf,cel_pgsql.conf cdr_pgsql.conf res_pgsql.conf,cel_pgsql cdr_pgsql res_config_pgsql,))
|
||||||
|
$(eval $(call BuildAsterisk11Module,res-adsi,Provide ADSI,Analog Display Services Interface capability,,,,res_adsi,))
|
||||||
$(eval $(call BuildAsterisk11Module,res-ael-share,Shareable AEL code,support for shareable AEL code mainly between internal and external modules,,,,res_ael_share,))
|
$(eval $(call BuildAsterisk11Module,res-ael-share,Shareable AEL code,support for shareable AEL code mainly between internal and external modules,,,,res_ael_share,))
|
||||||
$(eval $(call BuildAsterisk11Module,res-agi,Asterisk Gateway Interface,Support for the Asterisk Gateway Interface extension,,,,res_agi,))
|
$(eval $(call BuildAsterisk11Module,res-agi,Asterisk Gateway Interface,Support for the Asterisk Gateway Interface extension,,,,res_agi,))
|
||||||
|
$(eval $(call BuildAsterisk11Module,res-calendar,Calendaring API,Calendaring support (ICal and Google Calendar),,/etc/asterisk/calendar.conf,calendar.conf,res_calendar,,))
|
||||||
$(eval $(call BuildAsterisk11Module,res-clioriginate,Calls via CLI,Originate calls via the CLI,,,,res_clioriginate,))
|
$(eval $(call BuildAsterisk11Module,res-clioriginate,Calls via CLI,Originate calls via the CLI,,,,res_clioriginate,))
|
||||||
$(eval $(call BuildAsterisk11Module,res-fax-spandsp,Spandsp T.38 and G.711,Spandsp T.38 and G.711 FAX Resource,+asterisk11-res-fax +libspandsp +libtiff,,,res_fax_spandsp,))
|
$(eval $(call BuildAsterisk11Module,res-fax-spandsp,Spandsp T.38 and G.711,Spandsp T.38 and G.711 FAX Resource,+asterisk11-res-fax +libspandsp +libtiff,,,res_fax_spandsp,))
|
||||||
$(eval $(call BuildAsterisk11Module,res-fax,FAX modules,Generic FAX resource for FAX technology resource modules,+asterisk11-res-timing-pthread,/etc/asterisk/res_fax.conf /etc/asterisk/udptl.conf,udptl.conf res_fax.conf,res_fax,))
|
$(eval $(call BuildAsterisk11Module,res-fax,FAX modules,Generic FAX resource for FAX technology resource modules,+asterisk11-res-timing-pthread,/etc/asterisk/res_fax.conf /etc/asterisk/udptl.conf,udptl.conf res_fax.conf,res_fax,))
|
||||||
|
@ -421,5 +462,6 @@ $(eval $(call BuildAsterisk11Module,res-srtp,SRTP,Secure RTP,+libsrtp,,,res_srtp
|
||||||
$(eval $(call BuildAsterisk11Module,res-timing-dahdi,DAHDI Timing Interface,,+asterisk11-chan-dahdi,,,res_timing_dahdi,))
|
$(eval $(call BuildAsterisk11Module,res-timing-dahdi,DAHDI Timing Interface,,+asterisk11-chan-dahdi,,,res_timing_dahdi,))
|
||||||
$(eval $(call BuildAsterisk11Module,res-timing-pthread,pthread Timing Interface,,,,,res_timing_pthread,))
|
$(eval $(call BuildAsterisk11Module,res-timing-pthread,pthread Timing Interface,,,,,res_timing_pthread,))
|
||||||
$(eval $(call BuildAsterisk11Module,res-timing-timerfd,Timerfd Timing Interface,,,,,res_timing_timerfd,))
|
$(eval $(call BuildAsterisk11Module,res-timing-timerfd,Timerfd Timing Interface,,,,,res_timing_timerfd,))
|
||||||
$(eval $(call BuildAsterisk11Module,voicemail,Voicemail,voicemail related modules,,/etc/asterisk/voicemail.conf,voicemail.conf,*voicemail res_adsi res_smdi,vm-*))
|
$(eval $(call BuildAsterisk11Module,res-xmpp,XMPP client and component module,reference module for interfacting Asterisk directly as a client or component with XMPP server,+libiksemel +libopenssl,/etc/asterisk/xmpp.conf,xmpp.conf,res_xmpp,))
|
||||||
|
$(eval $(call BuildAsterisk11Module,res-realtime,Realtime Interface,,,,,res_realtime,))
|
||||||
|
$(eval $(call BuildAsterisk11Module,voicemail,Voicemail,voicemail related modules,+asterisk11-res-adsi +asterisk11-res-smdi,/etc/asterisk/voicemail.conf,voicemail.conf,*voicemail,vm-*))
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
--- a/res/Makefile
|
--- a/res/Makefile
|
||||||
+++ b/res/Makefile
|
+++ b/res/Makefile
|
||||||
@@ -75,7 +75,7 @@ dist-clean::
|
@@ -78,7 +78,7 @@ distclean::
|
||||||
rm -f pjproject/build.mak
|
rm -f pjproject/build.mak
|
||||||
|
|
||||||
pjproject/build.mak: pjproject/aconfigure
|
pjproject/build.mak: pjproject/aconfigure
|
||||||
|
|
|
@ -1,10 +1,11 @@
|
||||||
--- a/configure
|
--- a/configure.ac
|
||||||
+++ b/configure
|
+++ b/configure.ac
|
||||||
@@ -16464,7 +16464,6 @@ if ac_fn_c_try_link "$LINENO"; then :
|
@@ -1175,7 +1175,6 @@ AC_LINK_IFELSE(
|
||||||
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
|
#include <resolv.h>],
|
||||||
$as_echo "yes" >&6; }
|
[int foo = res_ninit(NULL);])],
|
||||||
|
AC_MSG_RESULT(yes)
|
||||||
|
- AC_DEFINE([HAVE_RES_NINIT], 1, [Define to 1 if your system has the re-entrant resolver functions.])
|
||||||
|
AC_SEARCH_LIBS(res_9_ndestroy, resolv)
|
||||||
|
AC_MSG_CHECKING(for res_ndestroy)
|
||||||
|
AC_LINK_IFELSE(
|
||||||
|
|
||||||
-$as_echo "#define HAVE_RES_NINIT 1" >>confdefs.h
|
|
||||||
|
|
||||||
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for library containing res_9_ndestroy" >&5
|
|
||||||
$as_echo_n "checking for library containing res_9_ndestroy... " >&6; }
|
|
||||||
|
|
117
net/asterisk-11.x/patches/022-AST-2016-007.patch
Normal file
117
net/asterisk-11.x/patches/022-AST-2016-007.patch
Normal file
|
@ -0,0 +1,117 @@
|
||||||
|
From a503e4879cab7e35069e5481e0864b64b55e223d Mon Sep 17 00:00:00 2001
|
||||||
|
From: Corey Farrell <git@cfware.com>
|
||||||
|
Date: Mon, 8 Aug 2016 08:47:12 -0400
|
||||||
|
Subject: [PATCH] Prevent leak of dialog RTP/SRTP instances.
|
||||||
|
|
||||||
|
In some scenarios dialog_initialize_rtp can be called multiple times on
|
||||||
|
the same dialog. This can cause RTP instances to be leaked along with
|
||||||
|
multiple file descriptors for each instance.
|
||||||
|
|
||||||
|
ASTERISK-26272 #close
|
||||||
|
|
||||||
|
Change-Id: Id716c2b87762d890c062b42538524a95067018a8
|
||||||
|
---
|
||||||
|
channels/chan_sip.c | 61 ++++++++++++++++++++++++++++++++++-------------------
|
||||||
|
1 file changed, 39 insertions(+), 22 deletions(-)
|
||||||
|
|
||||||
|
diff --git a/channels/chan_sip.c b/channels/chan_sip.c
|
||||||
|
index 9eaed58..2c29c9e 100644
|
||||||
|
--- a/channels/chan_sip.c
|
||||||
|
+++ b/channels/chan_sip.c
|
||||||
|
@@ -5697,6 +5697,38 @@ static void copy_socket_data(struct sip_socket *to_sock, const struct sip_socket
|
||||||
|
*to_sock = *from_sock;
|
||||||
|
}
|
||||||
|
|
||||||
|
+/*! Cleanup the RTP and SRTP portions of a dialog
|
||||||
|
+ *
|
||||||
|
+ * \note This procedure excludes vsrtp as it is initialized differently.
|
||||||
|
+ */
|
||||||
|
+static void dialog_clean_rtp(struct sip_pvt *p)
|
||||||
|
+{
|
||||||
|
+ if (p->rtp) {
|
||||||
|
+ ast_rtp_instance_destroy(p->rtp);
|
||||||
|
+ p->rtp = NULL;
|
||||||
|
+ }
|
||||||
|
+
|
||||||
|
+ if (p->vrtp) {
|
||||||
|
+ ast_rtp_instance_destroy(p->vrtp);
|
||||||
|
+ p->vrtp = NULL;
|
||||||
|
+ }
|
||||||
|
+
|
||||||
|
+ if (p->trtp) {
|
||||||
|
+ ast_rtp_instance_destroy(p->trtp);
|
||||||
|
+ p->trtp = NULL;
|
||||||
|
+ }
|
||||||
|
+
|
||||||
|
+ if (p->srtp) {
|
||||||
|
+ sip_srtp_destroy(p->srtp);
|
||||||
|
+ p->srtp = NULL;
|
||||||
|
+ }
|
||||||
|
+
|
||||||
|
+ if (p->tsrtp) {
|
||||||
|
+ sip_srtp_destroy(p->tsrtp);
|
||||||
|
+ p->tsrtp = NULL;
|
||||||
|
+ }
|
||||||
|
+}
|
||||||
|
+
|
||||||
|
/*! \brief Initialize DTLS-SRTP support on an RTP instance */
|
||||||
|
static int dialog_initialize_dtls_srtp(const struct sip_pvt *dialog, struct ast_rtp_instance *rtp, struct sip_srtp **srtp)
|
||||||
|
{
|
||||||
|
@@ -5744,6 +5776,9 @@ static int dialog_initialize_rtp(struct sip_pvt *dialog)
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
+ /* Make sure previous RTP instances/FD's do not leak */
|
||||||
|
+ dialog_clean_rtp(dialog);
|
||||||
|
+
|
||||||
|
ast_sockaddr_copy(&bindaddr_tmp, &bindaddr);
|
||||||
|
if (!(dialog->rtp = ast_rtp_instance_new(dialog->engine, sched, &bindaddr_tmp, NULL))) {
|
||||||
|
return -1;
|
||||||
|
@@ -6408,18 +6443,10 @@ static void sip_pvt_dtor(void *vdoomed)
|
||||||
|
ast_free(p->notify);
|
||||||
|
p->notify = NULL;
|
||||||
|
}
|
||||||
|
- if (p->rtp) {
|
||||||
|
- ast_rtp_instance_destroy(p->rtp);
|
||||||
|
- p->rtp = NULL;
|
||||||
|
- }
|
||||||
|
- if (p->vrtp) {
|
||||||
|
- ast_rtp_instance_destroy(p->vrtp);
|
||||||
|
- p->vrtp = NULL;
|
||||||
|
- }
|
||||||
|
- if (p->trtp) {
|
||||||
|
- ast_rtp_instance_destroy(p->trtp);
|
||||||
|
- p->trtp = NULL;
|
||||||
|
- }
|
||||||
|
+
|
||||||
|
+ /* Free RTP and SRTP instances */
|
||||||
|
+ dialog_clean_rtp(p);
|
||||||
|
+
|
||||||
|
if (p->udptl) {
|
||||||
|
ast_udptl_destroy(p->udptl);
|
||||||
|
p->udptl = NULL;
|
||||||
|
@@ -6455,21 +6482,11 @@ static void sip_pvt_dtor(void *vdoomed)
|
||||||
|
|
||||||
|
destroy_msg_headers(p);
|
||||||
|
|
||||||
|
- if (p->srtp) {
|
||||||
|
- sip_srtp_destroy(p->srtp);
|
||||||
|
- p->srtp = NULL;
|
||||||
|
- }
|
||||||
|
-
|
||||||
|
if (p->vsrtp) {
|
||||||
|
sip_srtp_destroy(p->vsrtp);
|
||||||
|
p->vsrtp = NULL;
|
||||||
|
}
|
||||||
|
|
||||||
|
- if (p->tsrtp) {
|
||||||
|
- sip_srtp_destroy(p->tsrtp);
|
||||||
|
- p->tsrtp = NULL;
|
||||||
|
- }
|
||||||
|
-
|
||||||
|
if (p->directmediaacl) {
|
||||||
|
p->directmediaacl = ast_free_acl_list(p->directmediaacl);
|
||||||
|
}
|
||||||
|
--
|
||||||
|
2.5.5
|
||||||
|
|
27
net/asterisk-11.x/patches/023-AST-2016-009-11.diff
Normal file
27
net/asterisk-11.x/patches/023-AST-2016-009-11.diff
Normal file
|
@ -0,0 +1,27 @@
|
||||||
|
diff --git a/channels/chan_sip.c b/channels/chan_sip.c
|
||||||
|
index 556db57..9c74acb 100644
|
||||||
|
--- a/channels/chan_sip.c
|
||||||
|
+++ b/channels/chan_sip.c
|
||||||
|
@@ -8132,8 +8132,6 @@ static const char *__get_header(const struct sip_request *req, const char *name,
|
||||||
|
* one afterwards. If you shouldn't do it, what absolute idiot decided it was
|
||||||
|
* a good idea to say you can do it, and if you can do it, why in the hell would.
|
||||||
|
* you say you shouldn't.
|
||||||
|
- * Anyways, pedanticsipchecking controls whether we allow spaces before ':',
|
||||||
|
- * and we always allow spaces after that for compatibility.
|
||||||
|
*/
|
||||||
|
const char *sname = find_alias(name, NULL);
|
||||||
|
int x, len = strlen(name), slen = (sname ? 1 : 0);
|
||||||
|
@@ -8146,10 +8144,10 @@ static const char *__get_header(const struct sip_request *req, const char *name,
|
||||||
|
if (match || smatch) {
|
||||||
|
/* skip name */
|
||||||
|
const char *r = header + (match ? len : slen );
|
||||||
|
- if (sip_cfg.pedanticsipchecking) {
|
||||||
|
- r = ast_skip_blanks(r);
|
||||||
|
+ /* HCOLON has optional SP/HTAB; skip past those */
|
||||||
|
+ while (*r == ' ' || *r == '\t') {
|
||||||
|
+ ++r;
|
||||||
|
}
|
||||||
|
-
|
||||||
|
if (*r == ':') {
|
||||||
|
*start = x+1;
|
||||||
|
return ast_skip_blanks(r+1);
|
195
net/asterisk-11.x/patches/024-AST-2017-005-11.diff
Normal file
195
net/asterisk-11.x/patches/024-AST-2017-005-11.diff
Normal file
|
@ -0,0 +1,195 @@
|
||||||
|
From dc4c130439f053592b86f0b35c1fb219a0dc6587 Mon Sep 17 00:00:00 2001
|
||||||
|
From: Joshua Colp <jcolp@digium.com>
|
||||||
|
Date: Mon, 22 May 2017 15:36:38 +0000
|
||||||
|
Subject: [PATCH] res_rtp_asterisk: Only learn a new source in learn state.
|
||||||
|
|
||||||
|
This change moves the logic which learns a new source address
|
||||||
|
for RTP so it only occurs in the learning state. The learning
|
||||||
|
state is entered on initial allocation of RTP or if we are
|
||||||
|
told that the remote address for the media has changed. While
|
||||||
|
in the learning state if we continue to receive media from
|
||||||
|
the original source we restart the learning process. It is
|
||||||
|
only once we receive a sufficient number of RTP packets from
|
||||||
|
the new source that we will switch to it. Once this is done
|
||||||
|
the closed state is entered where all packets that do not
|
||||||
|
originate from the expected source are dropped.
|
||||||
|
|
||||||
|
The learning process has also been improved to take into
|
||||||
|
account the time between received packets so a flood of them
|
||||||
|
while in the learning state does not cause media to be switched.
|
||||||
|
|
||||||
|
Finally RTCP now drops packets which are not for the learned
|
||||||
|
SSRC if strict RTP is enabled.
|
||||||
|
|
||||||
|
ASTERISK-27013
|
||||||
|
|
||||||
|
Change-Id: I56a96e993700906355e79bc880ad9d4ad3ab129c
|
||||||
|
---
|
||||||
|
|
||||||
|
diff --git a/res/res_rtp_asterisk.c b/res/res_rtp_asterisk.c
|
||||||
|
index 4cdc750..4881171 100644
|
||||||
|
--- a/res/res_rtp_asterisk.c
|
||||||
|
+++ b/res/res_rtp_asterisk.c
|
||||||
|
@@ -201,6 +201,7 @@
|
||||||
|
struct rtp_learning_info {
|
||||||
|
int max_seq; /*!< The highest sequence number received */
|
||||||
|
int packets; /*!< The number of remaining packets before the source is accepted */
|
||||||
|
+ struct timeval received; /*!< The time of the last received packet */
|
||||||
|
};
|
||||||
|
|
||||||
|
#ifdef HAVE_OPENSSL_SRTP
|
||||||
|
@@ -286,7 +287,6 @@
|
||||||
|
* but these are in place to keep learning mode sequence values sealed from their normal counterparts.
|
||||||
|
*/
|
||||||
|
struct rtp_learning_info rtp_source_learn; /* Learning mode track for the expected RTP source */
|
||||||
|
- struct rtp_learning_info alt_source_learn; /* Learning mode tracking for a new RTP source after one has been chosen */
|
||||||
|
|
||||||
|
struct rtp_red *red;
|
||||||
|
|
||||||
|
@@ -2357,6 +2357,7 @@
|
||||||
|
{
|
||||||
|
info->max_seq = seq - 1;
|
||||||
|
info->packets = learning_min_sequential;
|
||||||
|
+ memset(&info->received, 0, sizeof(info->received));
|
||||||
|
}
|
||||||
|
|
||||||
|
/*!
|
||||||
|
@@ -2371,6 +2372,13 @@
|
||||||
|
*/
|
||||||
|
static int rtp_learning_rtp_seq_update(struct rtp_learning_info *info, uint16_t seq)
|
||||||
|
{
|
||||||
|
+ if (!ast_tvzero(info->received) && ast_tvdiff_ms(ast_tvnow(), info->received) < 5) {
|
||||||
|
+ /* During the probation period the minimum amount of media we'll accept is
|
||||||
|
+ * 10ms so give a reasonable 5ms buffer just in case we get it sporadically.
|
||||||
|
+ */
|
||||||
|
+ return 1;
|
||||||
|
+ }
|
||||||
|
+
|
||||||
|
if (seq == info->max_seq + 1) {
|
||||||
|
/* packet is in sequence */
|
||||||
|
info->packets--;
|
||||||
|
@@ -2379,6 +2387,7 @@
|
||||||
|
info->packets = learning_min_sequential - 1;
|
||||||
|
}
|
||||||
|
info->max_seq = seq;
|
||||||
|
+ info->received = ast_tvnow();
|
||||||
|
|
||||||
|
return (info->packets == 0);
|
||||||
|
}
|
||||||
|
@@ -2540,7 +2549,6 @@
|
||||||
|
rtp->strict_rtp_state = (strictrtp ? STRICT_RTP_LEARN : STRICT_RTP_OPEN);
|
||||||
|
if (strictrtp) {
|
||||||
|
rtp_learning_seq_init(&rtp->rtp_source_learn, (uint16_t)rtp->seqno);
|
||||||
|
- rtp_learning_seq_init(&rtp->alt_source_learn, (uint16_t)rtp->seqno);
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Create a new socket for us to listen on and use */
|
||||||
|
@@ -3910,16 +3918,6 @@
|
||||||
|
|
||||||
|
packetwords = res / 4;
|
||||||
|
|
||||||
|
- if (ast_rtp_instance_get_prop(instance, AST_RTP_PROPERTY_NAT)) {
|
||||||
|
- /* Send to whoever sent to us */
|
||||||
|
- if (ast_sockaddr_cmp(&rtp->rtcp->them, &addr)) {
|
||||||
|
- ast_sockaddr_copy(&rtp->rtcp->them, &addr);
|
||||||
|
- if (rtpdebug)
|
||||||
|
- ast_debug(0, "RTCP NAT: Got RTCP from other end. Now sending to address %s\n",
|
||||||
|
- ast_sockaddr_stringify(&rtp->rtcp->them));
|
||||||
|
- }
|
||||||
|
- }
|
||||||
|
-
|
||||||
|
ast_debug(1, "Got RTCP report of %d bytes\n", res);
|
||||||
|
|
||||||
|
while (position < packetwords) {
|
||||||
|
@@ -3939,6 +3937,24 @@
|
||||||
|
if (rtpdebug)
|
||||||
|
ast_debug(1, "RTCP Read too short\n");
|
||||||
|
return &ast_null_frame;
|
||||||
|
+ }
|
||||||
|
+
|
||||||
|
+ if ((rtp->strict_rtp_state != STRICT_RTP_OPEN) && (ntohl(rtcpheader[i + 1]) != rtp->themssrc)) {
|
||||||
|
+ /* Skip over this RTCP record as it does not contain the correct SSRC */
|
||||||
|
+ position += (length + 1);
|
||||||
|
+ ast_debug(1, "%p -- Received RTCP report from %s, dropping due to strict RTP protection. Received SSRC '%u' but expected '%u'\n",
|
||||||
|
+ rtp, ast_sockaddr_stringify(&addr), ntohl(rtcpheader[i + 1]), rtp->themssrc);
|
||||||
|
+ continue;
|
||||||
|
+ }
|
||||||
|
+
|
||||||
|
+ if (ast_rtp_instance_get_prop(instance, AST_RTP_PROPERTY_NAT)) {
|
||||||
|
+ /* Send to whoever sent to us */
|
||||||
|
+ if (ast_sockaddr_cmp(&rtp->rtcp->them, &addr)) {
|
||||||
|
+ ast_sockaddr_copy(&rtp->rtcp->them, &addr);
|
||||||
|
+ if (rtpdebug)
|
||||||
|
+ ast_debug(0, "RTCP NAT: Got RTCP from other end. Now sending to address %s\n",
|
||||||
|
+ ast_sockaddr_stringify(&rtp->rtcp->them));
|
||||||
|
+ }
|
||||||
|
}
|
||||||
|
|
||||||
|
if (rtcp_debug_test_addr(&addr)) {
|
||||||
|
@@ -4330,24 +4346,11 @@
|
||||||
|
|
||||||
|
/* If strict RTP protection is enabled see if we need to learn the remote address or if we need to drop the packet */
|
||||||
|
if (rtp->strict_rtp_state == STRICT_RTP_LEARN) {
|
||||||
|
- ast_debug(1, "%p -- Probation learning mode pass with source address %s\n", rtp, ast_sockaddr_stringify(&addr));
|
||||||
|
- /* For now, we always copy the address. */
|
||||||
|
- ast_sockaddr_copy(&rtp->strict_rtp_address, &addr);
|
||||||
|
-
|
||||||
|
- /* Send the rtp and the seqno from header to rtp_learning_rtp_seq_update to see whether we can exit or not*/
|
||||||
|
- if (rtp_learning_rtp_seq_update(&rtp->rtp_source_learn, seqno)) {
|
||||||
|
- ast_debug(1, "%p -- Probation at seq %d with %d to go; discarding frame\n",
|
||||||
|
- rtp, rtp->rtp_source_learn.max_seq, rtp->rtp_source_learn.packets);
|
||||||
|
- return &ast_null_frame;
|
||||||
|
- }
|
||||||
|
-
|
||||||
|
- ast_verb(4, "%p -- Probation passed - setting RTP source address to %s\n", rtp, ast_sockaddr_stringify(&addr));
|
||||||
|
- rtp->strict_rtp_state = STRICT_RTP_CLOSED;
|
||||||
|
- }
|
||||||
|
- if (rtp->strict_rtp_state == STRICT_RTP_CLOSED) {
|
||||||
|
if (!ast_sockaddr_cmp(&rtp->strict_rtp_address, &addr)) {
|
||||||
|
- /* Always reset the alternate learning source */
|
||||||
|
- rtp_learning_seq_init(&rtp->alt_source_learn, seqno);
|
||||||
|
+ /* We are learning a new address but have received traffic from the existing address,
|
||||||
|
+ * accept it but reset the current learning for the new source so it only takes over
|
||||||
|
+ * once sufficient traffic has been received. */
|
||||||
|
+ rtp_learning_seq_init(&rtp->rtp_source_learn, seqno);
|
||||||
|
} else {
|
||||||
|
/* Hmm, not the strict address. Perhaps we're getting audio from the alternate? */
|
||||||
|
if (!ast_sockaddr_cmp(&rtp->alt_rtp_address, &addr)) {
|
||||||
|
@@ -4359,15 +4362,21 @@
|
||||||
|
* it, that means we've stopped getting RTP from the original source and we should
|
||||||
|
* switch to it.
|
||||||
|
*/
|
||||||
|
- if (rtp_learning_rtp_seq_update(&rtp->alt_source_learn, seqno)) {
|
||||||
|
+ if (rtp_learning_rtp_seq_update(&rtp->rtp_source_learn, seqno)) {
|
||||||
|
ast_debug(1, "%p -- Received RTP packet from %s, dropping due to strict RTP protection. Will switch to it in %d packets\n",
|
||||||
|
- rtp, ast_sockaddr_stringify(&addr), rtp->alt_source_learn.packets);
|
||||||
|
+ rtp, ast_sockaddr_stringify(&addr), rtp->rtp_source_learn.packets);
|
||||||
|
return &ast_null_frame;
|
||||||
|
}
|
||||||
|
- ast_verb(4, "%p -- Switching RTP source address to %s\n", rtp, ast_sockaddr_stringify(&addr));
|
||||||
|
ast_sockaddr_copy(&rtp->strict_rtp_address, &addr);
|
||||||
|
}
|
||||||
|
+
|
||||||
|
+ ast_verb(4, "%p -- Probation passed - setting RTP source address to %s\n", rtp, ast_sockaddr_stringify(&addr));
|
||||||
|
+ rtp->strict_rtp_state = STRICT_RTP_CLOSED;
|
||||||
|
}
|
||||||
|
+ } else if (rtp->strict_rtp_state == STRICT_RTP_CLOSED && ast_sockaddr_cmp(&rtp->strict_rtp_address, &addr)) {
|
||||||
|
+ ast_debug(1, "%p -- Received RTP packet from %s, dropping due to strict RTP protection.\n",
|
||||||
|
+ rtp, ast_sockaddr_stringify(&addr));
|
||||||
|
+ return &ast_null_frame;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* If symmetric RTP is enabled see if the remote side is not what we expected and change where we are sending audio */
|
||||||
|
@@ -4762,7 +4771,11 @@
|
||||||
|
|
||||||
|
rtp->rxseqno = 0;
|
||||||
|
|
||||||
|
- if (strictrtp && rtp->strict_rtp_state != STRICT_RTP_OPEN) {
|
||||||
|
+ if (strictrtp && rtp->strict_rtp_state != STRICT_RTP_OPEN && !ast_sockaddr_isnull(addr) &&
|
||||||
|
+ ast_sockaddr_cmp(addr, &rtp->strict_rtp_address)) {
|
||||||
|
+ /* We only need to learn a new strict source address if we've been told the source is
|
||||||
|
+ * changing to something different.
|
||||||
|
+ */
|
||||||
|
rtp->strict_rtp_state = STRICT_RTP_LEARN;
|
||||||
|
rtp_learning_seq_init(&rtp->rtp_source_learn, rtp->seqno);
|
||||||
|
}
|
397
net/asterisk-11.x/patches/025-AST-2017-006-11.diff
Normal file
397
net/asterisk-11.x/patches/025-AST-2017-006-11.diff
Normal file
|
@ -0,0 +1,397 @@
|
||||||
|
From 31676ce058596b57e10fbf83ff1817ca7907c3b1 Mon Sep 17 00:00:00 2001
|
||||||
|
From: Corey Farrell <git@cfware.com>
|
||||||
|
Date: Sat, 01 Jul 2017 20:24:27 -0400
|
||||||
|
Subject: [PATCH] AST-2017-006: Fix app_minivm application MinivmNotify command injection
|
||||||
|
|
||||||
|
An admin can configure app_minivm with an externnotify program to be run
|
||||||
|
when a voicemail is received. The app_minivm application MinivmNotify
|
||||||
|
uses ast_safe_system() for this purpose which is vulnerable to command
|
||||||
|
injection since the Caller-ID name and number values given to externnotify
|
||||||
|
can come from an external untrusted source.
|
||||||
|
|
||||||
|
* Add ast_safe_execvp() function. This gives modules the ability to run
|
||||||
|
external commands with greater safety compared to ast_safe_system().
|
||||||
|
Specifically when some parameters are filled by untrusted sources the new
|
||||||
|
function does not allow malicious input to break argument encoding. This
|
||||||
|
may be of particular concern where CALLERID(name) or CALLERID(num) may be
|
||||||
|
used as a parameter to a script run by ast_safe_system() which could
|
||||||
|
potentially allow arbitrary command execution.
|
||||||
|
|
||||||
|
* Changed app_minivm.c:run_externnotify() to use the new ast_safe_execvp()
|
||||||
|
instead of ast_safe_system() to avoid command injection.
|
||||||
|
|
||||||
|
* Document code injection potential from untrusted data sources for other
|
||||||
|
shell commands that are under user control.
|
||||||
|
|
||||||
|
ASTERISK-27103
|
||||||
|
|
||||||
|
Change-Id: I7552472247a84cde24e1358aaf64af160107aef1
|
||||||
|
---
|
||||||
|
|
||||||
|
diff --git a/README-SERIOUSLY.bestpractices.txt b/README-SERIOUSLY.bestpractices.txt
|
||||||
|
index 281d0d3..d63f1df 100644
|
||||||
|
--- a/README-SERIOUSLY.bestpractices.txt
|
||||||
|
+++ b/README-SERIOUSLY.bestpractices.txt
|
||||||
|
@@ -94,6 +94,13 @@
|
||||||
|
ways in which you can mitigate this impact: stricter pattern matching, or using
|
||||||
|
the FILTER() dialplan function.
|
||||||
|
|
||||||
|
+The CALLERID(num) and CALLERID(name) values are other commonly used values that
|
||||||
|
+are sources of data potentially supplied by outside sources. If you use these
|
||||||
|
+values as parameters to the System(), MixMonitor(), or Monitor() applications
|
||||||
|
+or the SHELL() dialplan function, you can allow injection of arbitrary operating
|
||||||
|
+system command execution. The FILTER() dialplan function is available to remove
|
||||||
|
+dangerous characters from untrusted strings to block the command injection.
|
||||||
|
+
|
||||||
|
Strict Pattern Matching
|
||||||
|
-----------------------
|
||||||
|
|
||||||
|
diff --git a/apps/app_minivm.c b/apps/app_minivm.c
|
||||||
|
index ecdf9c6..8edc132 100644
|
||||||
|
--- a/apps/app_minivm.c
|
||||||
|
+++ b/apps/app_minivm.c
|
||||||
|
@@ -1741,21 +1741,35 @@
|
||||||
|
/*! \brief Run external notification for voicemail message */
|
||||||
|
static void run_externnotify(struct ast_channel *chan, struct minivm_account *vmu)
|
||||||
|
{
|
||||||
|
- char arguments[BUFSIZ];
|
||||||
|
+ char fquser[AST_MAX_CONTEXT * 2];
|
||||||
|
+ char *argv[5] = { NULL };
|
||||||
|
+ struct ast_party_caller *caller;
|
||||||
|
+ char *cid;
|
||||||
|
+ int idx;
|
||||||
|
|
||||||
|
- if (ast_strlen_zero(vmu->externnotify) && ast_strlen_zero(global_externnotify))
|
||||||
|
+ if (ast_strlen_zero(vmu->externnotify) && ast_strlen_zero(global_externnotify)) {
|
||||||
|
return;
|
||||||
|
+ }
|
||||||
|
|
||||||
|
- snprintf(arguments, sizeof(arguments), "%s %s@%s %s %s&",
|
||||||
|
- ast_strlen_zero(vmu->externnotify) ? global_externnotify : vmu->externnotify,
|
||||||
|
- vmu->username, vmu->domain,
|
||||||
|
- (ast_channel_caller(chan)->id.name.valid && ast_channel_caller(chan)->id.name.str)
|
||||||
|
- ? ast_channel_caller(chan)->id.name.str : "",
|
||||||
|
- (ast_channel_caller(chan)->id.number.valid && ast_channel_caller(chan)->id.number.str)
|
||||||
|
- ? ast_channel_caller(chan)->id.number.str : "");
|
||||||
|
+ snprintf(fquser, sizeof(fquser), "%s@%s", vmu->username, vmu->domain);
|
||||||
|
|
||||||
|
- ast_debug(1, "Executing: %s\n", arguments);
|
||||||
|
- ast_safe_system(arguments);
|
||||||
|
+ caller = ast_channel_caller(chan);
|
||||||
|
+ idx = 0;
|
||||||
|
+ argv[idx++] = ast_strlen_zero(vmu->externnotify) ? global_externnotify : vmu->externnotify;
|
||||||
|
+ argv[idx++] = fquser;
|
||||||
|
+ cid = S_COR(caller->id.name.valid, caller->id.name.str, NULL);
|
||||||
|
+ if (cid) {
|
||||||
|
+ argv[idx++] = cid;
|
||||||
|
+ }
|
||||||
|
+ cid = S_COR(caller->id.number.valid, caller->id.number.str, NULL);
|
||||||
|
+ if (cid) {
|
||||||
|
+ argv[idx++] = cid;
|
||||||
|
+ }
|
||||||
|
+ argv[idx] = NULL;
|
||||||
|
+
|
||||||
|
+ ast_debug(1, "Executing: %s %s %s %s\n",
|
||||||
|
+ argv[0], argv[1], argv[2] ?: "", argv[3] ?: "");
|
||||||
|
+ ast_safe_execvp(1, argv[0], argv);
|
||||||
|
}
|
||||||
|
|
||||||
|
/*!\internal
|
||||||
|
diff --git a/apps/app_mixmonitor.c b/apps/app_mixmonitor.c
|
||||||
|
index 89a1d8c..96adb9a 100644
|
||||||
|
--- a/apps/app_mixmonitor.c
|
||||||
|
+++ b/apps/app_mixmonitor.c
|
||||||
|
@@ -127,6 +127,11 @@
|
||||||
|
<para>Will be executed when the recording is over.</para>
|
||||||
|
<para>Any strings matching <literal>^{X}</literal> will be unescaped to <variable>X</variable>.</para>
|
||||||
|
<para>All variables will be evaluated at the time MixMonitor is called.</para>
|
||||||
|
+ <warning><para>Do not use untrusted strings such as <variable>CALLERID(num)</variable>
|
||||||
|
+ or <variable>CALLERID(name)</variable> as part of the command parameters. You
|
||||||
|
+ risk a command injection attack executing arbitrary commands if the untrusted
|
||||||
|
+ strings aren't filtered to remove dangerous characters. See function
|
||||||
|
+ <variable>FILTER()</variable>.</para></warning>
|
||||||
|
</parameter>
|
||||||
|
</syntax>
|
||||||
|
<description>
|
||||||
|
@@ -143,6 +148,11 @@
|
||||||
|
<para>Will contain the filename used to record.</para>
|
||||||
|
</variable>
|
||||||
|
</variablelist>
|
||||||
|
+ <warning><para>Do not use untrusted strings such as <variable>CALLERID(num)</variable>
|
||||||
|
+ or <variable>CALLERID(name)</variable> as part of ANY of the application's
|
||||||
|
+ parameters. You risk a command injection attack executing arbitrary commands
|
||||||
|
+ if the untrusted strings aren't filtered to remove dangerous characters. See
|
||||||
|
+ function <variable>FILTER()</variable>.</para></warning>
|
||||||
|
</description>
|
||||||
|
<see-also>
|
||||||
|
<ref type="application">Monitor</ref>
|
||||||
|
diff --git a/apps/app_system.c b/apps/app_system.c
|
||||||
|
index 7fe453d..e868a07 100644
|
||||||
|
--- a/apps/app_system.c
|
||||||
|
+++ b/apps/app_system.c
|
||||||
|
@@ -48,6 +48,11 @@
|
||||||
|
<syntax>
|
||||||
|
<parameter name="command" required="true">
|
||||||
|
<para>Command to execute</para>
|
||||||
|
+ <warning><para>Do not use untrusted strings such as <variable>CALLERID(num)</variable>
|
||||||
|
+ or <variable>CALLERID(name)</variable> as part of the command parameters. You
|
||||||
|
+ risk a command injection attack executing arbitrary commands if the untrusted
|
||||||
|
+ strings aren't filtered to remove dangerous characters. See function
|
||||||
|
+ <variable>FILTER()</variable>.</para></warning>
|
||||||
|
</parameter>
|
||||||
|
</syntax>
|
||||||
|
<description>
|
||||||
|
@@ -73,6 +78,11 @@
|
||||||
|
<syntax>
|
||||||
|
<parameter name="command" required="true">
|
||||||
|
<para>Command to execute</para>
|
||||||
|
+ <warning><para>Do not use untrusted strings such as <variable>CALLERID(num)</variable>
|
||||||
|
+ or <variable>CALLERID(name)</variable> as part of the command parameters. You
|
||||||
|
+ risk a command injection attack executing arbitrary commands if the untrusted
|
||||||
|
+ strings aren't filtered to remove dangerous characters. See function
|
||||||
|
+ <variable>FILTER()</variable>.</para></warning>
|
||||||
|
</parameter>
|
||||||
|
</syntax>
|
||||||
|
<description>
|
||||||
|
diff --git a/configs/minivm.conf.sample b/configs/minivm.conf.sample
|
||||||
|
index 55a39c8..3dcd59d 100644
|
||||||
|
--- a/configs/minivm.conf.sample
|
||||||
|
+++ b/configs/minivm.conf.sample
|
||||||
|
@@ -51,7 +51,7 @@
|
||||||
|
; If you need to have an external program, i.e. /usr/bin/myapp called when a
|
||||||
|
; voicemail is received by the server. The arguments are
|
||||||
|
;
|
||||||
|
-; <app> <username@domain> <callerid-number> <callerid-name>
|
||||||
|
+; <app> <username@domain> <callerid-name> <callerid-number>
|
||||||
|
;
|
||||||
|
;externnotify=/usr/bin/myapp
|
||||||
|
; The character set for voicemail messages can be specified here
|
||||||
|
diff --git a/funcs/func_shell.c b/funcs/func_shell.c
|
||||||
|
index e403efc..79b7f99 100644
|
||||||
|
--- a/funcs/func_shell.c
|
||||||
|
+++ b/funcs/func_shell.c
|
||||||
|
@@ -84,6 +84,11 @@
|
||||||
|
<syntax>
|
||||||
|
<parameter name="command" required="true">
|
||||||
|
<para>The command that the shell should execute.</para>
|
||||||
|
+ <warning><para>Do not use untrusted strings such as <variable>CALLERID(num)</variable>
|
||||||
|
+ or <variable>CALLERID(name)</variable> as part of the command parameters. You
|
||||||
|
+ risk a command injection attack executing arbitrary commands if the untrusted
|
||||||
|
+ strings aren't filtered to remove dangerous characters. See function
|
||||||
|
+ <variable>FILTER()</variable>.</para></warning>
|
||||||
|
</parameter>
|
||||||
|
</syntax>
|
||||||
|
<description>
|
||||||
|
diff --git a/include/asterisk/app.h b/include/asterisk/app.h
|
||||||
|
index d10a0a6..8cdaea1 100644
|
||||||
|
--- a/include/asterisk/app.h
|
||||||
|
+++ b/include/asterisk/app.h
|
||||||
|
@@ -577,9 +577,34 @@
|
||||||
|
int ast_vm_test_create_user(const char *context, const char *mailbox);
|
||||||
|
#endif
|
||||||
|
|
||||||
|
-/*! \brief Safely spawn an external program while closing file descriptors
|
||||||
|
- \note This replaces the \b system call in all Asterisk modules
|
||||||
|
-*/
|
||||||
|
+/*!
|
||||||
|
+ * \brief Safely spawn an external program while closing file descriptors
|
||||||
|
+ *
|
||||||
|
+ * \note This replaces the \b execvp call in all Asterisk modules
|
||||||
|
+ *
|
||||||
|
+ * \param dualfork Non-zero to simulate running the program in the
|
||||||
|
+ * background by forking twice. The option provides similar
|
||||||
|
+ * functionality to the '&' in the OS shell command "cmd &". The
|
||||||
|
+ * option allows Asterisk to run a reaper loop to watch the first fork
|
||||||
|
+ * which immediately exits after spaning the second fork. The actual
|
||||||
|
+ * program is run in the second fork.
|
||||||
|
+ * \param file execvp(file, argv) file parameter
|
||||||
|
+ * \param argv execvp(file, argv) argv parameter
|
||||||
|
+ */
|
||||||
|
+int ast_safe_execvp(int dualfork, const char *file, char *const argv[]);
|
||||||
|
+
|
||||||
|
+/*!
|
||||||
|
+ * \brief Safely spawn an OS shell command while closing file descriptors
|
||||||
|
+ *
|
||||||
|
+ * \note This replaces the \b system call in all Asterisk modules
|
||||||
|
+ *
|
||||||
|
+ * \param s - OS shell command string to execute.
|
||||||
|
+ *
|
||||||
|
+ * \warning Command injection can happen using this call if the passed
|
||||||
|
+ * in string is created using untrusted data from an external source.
|
||||||
|
+ * It is best not to use untrusted data. However, the caller could
|
||||||
|
+ * filter out dangerous characters to avoid command injection.
|
||||||
|
+ */
|
||||||
|
int ast_safe_system(const char *s);
|
||||||
|
|
||||||
|
/*!
|
||||||
|
diff --git a/main/asterisk.c b/main/asterisk.c
|
||||||
|
index ce1d153..92256bd 100644
|
||||||
|
--- a/main/asterisk.c
|
||||||
|
+++ b/main/asterisk.c
|
||||||
|
@@ -1102,12 +1102,10 @@
|
||||||
|
ast_mutex_unlock(&safe_system_lock);
|
||||||
|
}
|
||||||
|
|
||||||
|
-int ast_safe_system(const char *s)
|
||||||
|
+/*! \brief fork and perform other preparations for spawning applications */
|
||||||
|
+static pid_t safe_exec_prep(int dualfork)
|
||||||
|
{
|
||||||
|
pid_t pid;
|
||||||
|
- int res;
|
||||||
|
- struct rusage rusage;
|
||||||
|
- int status;
|
||||||
|
|
||||||
|
#if defined(HAVE_WORKING_FORK) || defined(HAVE_WORKING_VFORK)
|
||||||
|
ast_replace_sigchld();
|
||||||
|
@@ -1129,35 +1127,102 @@
|
||||||
|
cap_free(cap);
|
||||||
|
#endif
|
||||||
|
#ifdef HAVE_WORKING_FORK
|
||||||
|
- if (ast_opt_high_priority)
|
||||||
|
+ if (ast_opt_high_priority) {
|
||||||
|
ast_set_priority(0);
|
||||||
|
+ }
|
||||||
|
/* Close file descriptors and launch system command */
|
||||||
|
ast_close_fds_above_n(STDERR_FILENO);
|
||||||
|
#endif
|
||||||
|
- execl("/bin/sh", "/bin/sh", "-c", s, (char *) NULL);
|
||||||
|
- _exit(1);
|
||||||
|
- } else if (pid > 0) {
|
||||||
|
+ if (dualfork) {
|
||||||
|
+#ifdef HAVE_WORKING_FORK
|
||||||
|
+ pid = fork();
|
||||||
|
+#else
|
||||||
|
+ pid = vfork();
|
||||||
|
+#endif
|
||||||
|
+ if (pid < 0) {
|
||||||
|
+ /* Second fork failed. */
|
||||||
|
+ /* No logger available. */
|
||||||
|
+ _exit(1);
|
||||||
|
+ }
|
||||||
|
+
|
||||||
|
+ if (pid > 0) {
|
||||||
|
+ /* This is the first fork, exit so the reaper finishes right away. */
|
||||||
|
+ _exit(0);
|
||||||
|
+ }
|
||||||
|
+
|
||||||
|
+ /* This is the second fork. The first fork will exit immediately so
|
||||||
|
+ * Asterisk doesn't have to wait for completion.
|
||||||
|
+ * ast_safe_system("cmd &") would run in the background, but the '&'
|
||||||
|
+ * cannot be added with ast_safe_execvp, so we have to double fork.
|
||||||
|
+ */
|
||||||
|
+ }
|
||||||
|
+ }
|
||||||
|
+
|
||||||
|
+ if (pid < 0) {
|
||||||
|
+ ast_log(LOG_WARNING, "Fork failed: %s\n", strerror(errno));
|
||||||
|
+ }
|
||||||
|
+#else
|
||||||
|
+ ast_log(LOG_WARNING, "Fork failed: %s\n", strerror(ENOTSUP));
|
||||||
|
+ pid = -1;
|
||||||
|
+#endif
|
||||||
|
+
|
||||||
|
+ return pid;
|
||||||
|
+}
|
||||||
|
+
|
||||||
|
+/*! \brief wait for spawned application to complete and unreplace sigchld */
|
||||||
|
+static int safe_exec_wait(pid_t pid)
|
||||||
|
+{
|
||||||
|
+ int res = -1;
|
||||||
|
+
|
||||||
|
+#if defined(HAVE_WORKING_FORK) || defined(HAVE_WORKING_VFORK)
|
||||||
|
+ if (pid > 0) {
|
||||||
|
for (;;) {
|
||||||
|
+ struct rusage rusage;
|
||||||
|
+ int status;
|
||||||
|
+
|
||||||
|
res = wait4(pid, &status, 0, &rusage);
|
||||||
|
if (res > -1) {
|
||||||
|
res = WIFEXITED(status) ? WEXITSTATUS(status) : -1;
|
||||||
|
break;
|
||||||
|
- } else if (errno != EINTR)
|
||||||
|
+ }
|
||||||
|
+ if (errno != EINTR) {
|
||||||
|
break;
|
||||||
|
+ }
|
||||||
|
}
|
||||||
|
- } else {
|
||||||
|
- ast_log(LOG_WARNING, "Fork failed: %s\n", strerror(errno));
|
||||||
|
- res = -1;
|
||||||
|
}
|
||||||
|
|
||||||
|
ast_unreplace_sigchld();
|
||||||
|
-#else /* !defined(HAVE_WORKING_FORK) && !defined(HAVE_WORKING_VFORK) */
|
||||||
|
- res = -1;
|
||||||
|
#endif
|
||||||
|
|
||||||
|
return res;
|
||||||
|
}
|
||||||
|
|
||||||
|
+int ast_safe_execvp(int dualfork, const char *file, char *const argv[])
|
||||||
|
+{
|
||||||
|
+ pid_t pid = safe_exec_prep(dualfork);
|
||||||
|
+
|
||||||
|
+ if (pid == 0) {
|
||||||
|
+ execvp(file, argv);
|
||||||
|
+ _exit(1);
|
||||||
|
+ /* noreturn from _exit */
|
||||||
|
+ }
|
||||||
|
+
|
||||||
|
+ return safe_exec_wait(pid);
|
||||||
|
+}
|
||||||
|
+
|
||||||
|
+int ast_safe_system(const char *s)
|
||||||
|
+{
|
||||||
|
+ pid_t pid = safe_exec_prep(0);
|
||||||
|
+
|
||||||
|
+ if (pid == 0) {
|
||||||
|
+ execl("/bin/sh", "/bin/sh", "-c", s, (char *) NULL);
|
||||||
|
+ _exit(1);
|
||||||
|
+ /* noreturn from _exit */
|
||||||
|
+ }
|
||||||
|
+
|
||||||
|
+ return safe_exec_wait(pid);
|
||||||
|
+}
|
||||||
|
+
|
||||||
|
/*!
|
||||||
|
* \brief enable or disable a logging level to a specified console
|
||||||
|
*/
|
||||||
|
diff --git a/res/res_monitor.c b/res/res_monitor.c
|
||||||
|
index 76c43e1..12f478a 100644
|
||||||
|
--- a/res/res_monitor.c
|
||||||
|
+++ b/res/res_monitor.c
|
||||||
|
@@ -57,17 +57,17 @@
|
||||||
|
<syntax>
|
||||||
|
<parameter name="file_format" argsep=":">
|
||||||
|
<argument name="file_format" required="true">
|
||||||
|
- <para>optional, if not set, defaults to <literal>wav</literal></para>
|
||||||
|
+ <para>Optional. If not set, defaults to <literal>wav</literal></para>
|
||||||
|
</argument>
|
||||||
|
<argument name="urlbase" />
|
||||||
|
</parameter>
|
||||||
|
<parameter name="fname_base">
|
||||||
|
- <para>if set, changes the filename used to the one specified.</para>
|
||||||
|
+ <para>If set, changes the filename used to the one specified.</para>
|
||||||
|
</parameter>
|
||||||
|
<parameter name="options">
|
||||||
|
<optionlist>
|
||||||
|
<option name="m">
|
||||||
|
- <para>when the recording ends mix the two leg files into one and
|
||||||
|
+ <para>When the recording ends mix the two leg files into one and
|
||||||
|
delete the two leg files. If the variable <variable>MONITOR_EXEC</variable>
|
||||||
|
is set, the application referenced in it will be executed instead of
|
||||||
|
soxmix/sox and the raw leg files will NOT be deleted automatically.
|
||||||
|
@@ -78,6 +78,13 @@
|
||||||
|
will be passed on as additional arguments to <variable>MONITOR_EXEC</variable>.
|
||||||
|
Both <variable>MONITOR_EXEC</variable> and the Mix flag can be set from the
|
||||||
|
administrator interface.</para>
|
||||||
|
+ <warning><para>Do not use untrusted strings such as
|
||||||
|
+ <variable>CALLERID(num)</variable> or <variable>CALLERID(name)</variable>
|
||||||
|
+ as part of <variable>MONITOR_EXEC</variable> or
|
||||||
|
+ <variable>MONITOR_EXEC_ARGS</variable>. You risk a command injection
|
||||||
|
+ attack executing arbitrary commands if the untrusted strings aren't
|
||||||
|
+ filtered to remove dangerous characters. See function
|
||||||
|
+ <variable>FILTER()</variable>.</para></warning>
|
||||||
|
</option>
|
||||||
|
<option name="b">
|
||||||
|
<para>Don't begin recording unless a call is bridged to another channel.</para>
|
778
net/asterisk-11.x/patches/026-AST-2017-008-11.diff
Normal file
778
net/asterisk-11.x/patches/026-AST-2017-008-11.diff
Normal file
|
@ -0,0 +1,778 @@
|
||||||
|
From fe2ba2f3ca60d33bc789c6ae8e03ee26dc1b637c Mon Sep 17 00:00:00 2001
|
||||||
|
From: Richard Mudgett <rmudgett@digium.com>
|
||||||
|
Date: Wed, 13 Sep 2017 12:07:42 -0500
|
||||||
|
Subject: [PATCH] AST-2017-008: Improve RTP and RTCP packet processing.
|
||||||
|
|
||||||
|
Validate RTCP packets before processing them.
|
||||||
|
|
||||||
|
* Validate that the received packet is of a minimum length and apply the
|
||||||
|
RFC3550 RTCP packet validation checks.
|
||||||
|
|
||||||
|
* Fixed potentially reading garbage beyond the received RTCP record data.
|
||||||
|
|
||||||
|
* Fixed rtp->themssrc only being set once when the remote could change
|
||||||
|
the SSRC. We would effectively stop handling the RTCP statistic records.
|
||||||
|
|
||||||
|
* Fixed rtp->themssrc to not treat a zero value as special by adding
|
||||||
|
rtp->themssrc_valid to indicate if rtp->themssrc is available.
|
||||||
|
|
||||||
|
ASTERISK-27274
|
||||||
|
|
||||||
|
Make strict RTP learning more flexible.
|
||||||
|
|
||||||
|
Direct media can cause strict RTP to attempt to learn a remote address
|
||||||
|
again before it has had a chance to learn the remote address the first
|
||||||
|
time. Because of the rapid relearn requests, strict RTP could latch onto
|
||||||
|
the first remote address and fail to latch onto the direct media remote
|
||||||
|
address. As a result, you have one way audio until the call is placed on
|
||||||
|
and off hold.
|
||||||
|
|
||||||
|
The new algorithm learns remote addresses for a set time (1.5 seconds)
|
||||||
|
before locking the remote address. In addition, we must see a configured
|
||||||
|
number of remote packets from the same address in a row before switching.
|
||||||
|
|
||||||
|
* Fixed strict RTP learning from always accepting the first new address
|
||||||
|
packet as the new stream.
|
||||||
|
|
||||||
|
* Fixed strict RTP to initialize the expected sequence number with the
|
||||||
|
last received sequence number instead of the last transmitted sequence
|
||||||
|
number.
|
||||||
|
|
||||||
|
* Fixed the predicted next sequence number calculation in
|
||||||
|
rtp_learning_rtp_seq_update() to handle overflow.
|
||||||
|
|
||||||
|
ASTERISK-27252
|
||||||
|
|
||||||
|
Change-Id: Ia2d3aa6e0f22906c25971e74f10027d96525f31c
|
||||||
|
---
|
||||||
|
|
||||||
|
diff --git a/res/res_rtp_asterisk.c b/res/res_rtp_asterisk.c
|
||||||
|
index 4881171..7393d57 100644
|
||||||
|
--- a/res/res_rtp_asterisk.c
|
||||||
|
+++ b/res/res_rtp_asterisk.c
|
||||||
|
@@ -115,7 +115,9 @@
|
||||||
|
STRICT_RTP_CLOSED, /*! Drop all RTP packets not coming from source that was learned */
|
||||||
|
};
|
||||||
|
|
||||||
|
-#define DEFAULT_STRICT_RTP STRICT_RTP_CLOSED
|
||||||
|
+#define STRICT_RTP_LEARN_TIMEOUT 1500 /*!< milliseconds */
|
||||||
|
+
|
||||||
|
+#define DEFAULT_STRICT_RTP -1 /*!< Enabled */
|
||||||
|
#define DEFAULT_ICESUPPORT 1
|
||||||
|
|
||||||
|
extern struct ast_srtp_res *res_srtp;
|
||||||
|
@@ -199,9 +201,11 @@
|
||||||
|
|
||||||
|
/*! \brief RTP learning mode tracking information */
|
||||||
|
struct rtp_learning_info {
|
||||||
|
+ struct ast_sockaddr proposed_address; /*!< Proposed remote address for strict RTP */
|
||||||
|
+ struct timeval start; /*!< The time learning mode was started */
|
||||||
|
+ struct timeval received; /*!< The time of the last received packet */
|
||||||
|
int max_seq; /*!< The highest sequence number received */
|
||||||
|
int packets; /*!< The number of remaining packets before the source is accepted */
|
||||||
|
- struct timeval received; /*!< The time of the last received packet */
|
||||||
|
};
|
||||||
|
|
||||||
|
#ifdef HAVE_OPENSSL_SRTP
|
||||||
|
@@ -223,7 +227,7 @@
|
||||||
|
unsigned char rawdata[8192 + AST_FRIENDLY_OFFSET];
|
||||||
|
unsigned int ssrc; /*!< Synchronization source, RFC 3550, page 10. */
|
||||||
|
unsigned int themssrc; /*!< Their SSRC */
|
||||||
|
- unsigned int rxssrc;
|
||||||
|
+ unsigned int themssrc_valid; /*!< True if their SSRC is available. */
|
||||||
|
unsigned int lastts;
|
||||||
|
unsigned int lastrxts;
|
||||||
|
unsigned int lastividtimestamp;
|
||||||
|
@@ -1655,8 +1659,6 @@
|
||||||
|
#endif
|
||||||
|
};
|
||||||
|
|
||||||
|
-static void rtp_learning_seq_init(struct rtp_learning_info *info, uint16_t seq);
|
||||||
|
-
|
||||||
|
#ifdef HAVE_OPENSSL_SRTP
|
||||||
|
static void dtls_perform_handshake(struct ast_rtp_instance *instance, struct dtls_details *dtls, int rtcp)
|
||||||
|
{
|
||||||
|
@@ -1685,6 +1687,8 @@
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifdef USE_PJPROJECT
|
||||||
|
+static void rtp_learning_start(struct ast_rtp *rtp);
|
||||||
|
+
|
||||||
|
static void ast_rtp_on_ice_complete(pj_ice_sess *ice, pj_status_t status)
|
||||||
|
{
|
||||||
|
struct ast_rtp_instance *instance = ice->user_data;
|
||||||
|
@@ -1721,8 +1725,8 @@
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
- rtp->strict_rtp_state = STRICT_RTP_LEARN;
|
||||||
|
- rtp_learning_seq_init(&rtp->rtp_source_learn, (uint16_t)rtp->seqno);
|
||||||
|
+ ast_verb(4, "%p -- Strict RTP learning after ICE completion\n", rtp);
|
||||||
|
+ rtp_learning_start(rtp);
|
||||||
|
}
|
||||||
|
|
||||||
|
static void ast_rtp_on_ice_rx_data(pj_ice_sess *ice, unsigned comp_id, unsigned transport_id, void *pkt, pj_size_t size, const pj_sockaddr_t *src_addr, unsigned src_addr_len)
|
||||||
|
@@ -2355,7 +2359,7 @@
|
||||||
|
*/
|
||||||
|
static void rtp_learning_seq_init(struct rtp_learning_info *info, uint16_t seq)
|
||||||
|
{
|
||||||
|
- info->max_seq = seq - 1;
|
||||||
|
+ info->max_seq = seq;
|
||||||
|
info->packets = learning_min_sequential;
|
||||||
|
memset(&info->received, 0, sizeof(info->received));
|
||||||
|
}
|
||||||
|
@@ -2372,14 +2376,17 @@
|
||||||
|
*/
|
||||||
|
static int rtp_learning_rtp_seq_update(struct rtp_learning_info *info, uint16_t seq)
|
||||||
|
{
|
||||||
|
+ /*
|
||||||
|
+ * During the learning mode the minimum amount of media we'll accept is
|
||||||
|
+ * 10ms so give a reasonable 5ms buffer just in case we get it sporadically.
|
||||||
|
+ */
|
||||||
|
if (!ast_tvzero(info->received) && ast_tvdiff_ms(ast_tvnow(), info->received) < 5) {
|
||||||
|
- /* During the probation period the minimum amount of media we'll accept is
|
||||||
|
- * 10ms so give a reasonable 5ms buffer just in case we get it sporadically.
|
||||||
|
+ /*
|
||||||
|
+ * Reject a flood of packets as acceptable for learning.
|
||||||
|
+ * Reset the needed packets.
|
||||||
|
*/
|
||||||
|
- return 1;
|
||||||
|
- }
|
||||||
|
-
|
||||||
|
- if (seq == info->max_seq + 1) {
|
||||||
|
+ info->packets = learning_min_sequential - 1;
|
||||||
|
+ } else if (seq == (uint16_t) (info->max_seq + 1)) {
|
||||||
|
/* packet is in sequence */
|
||||||
|
info->packets--;
|
||||||
|
} else {
|
||||||
|
@@ -2389,7 +2396,23 @@
|
||||||
|
info->max_seq = seq;
|
||||||
|
info->received = ast_tvnow();
|
||||||
|
|
||||||
|
- return (info->packets == 0);
|
||||||
|
+ return info->packets;
|
||||||
|
+}
|
||||||
|
+
|
||||||
|
+/*!
|
||||||
|
+ * \brief Start the strictrtp learning mode.
|
||||||
|
+ *
|
||||||
|
+ * \param rtp RTP session description
|
||||||
|
+ *
|
||||||
|
+ * \return Nothing
|
||||||
|
+ */
|
||||||
|
+static void rtp_learning_start(struct ast_rtp *rtp)
|
||||||
|
+{
|
||||||
|
+ rtp->strict_rtp_state = STRICT_RTP_LEARN;
|
||||||
|
+ memset(&rtp->rtp_source_learn.proposed_address, 0,
|
||||||
|
+ sizeof(rtp->rtp_source_learn.proposed_address));
|
||||||
|
+ rtp->rtp_source_learn.start = ast_tvnow();
|
||||||
|
+ rtp_learning_seq_init(&rtp->rtp_source_learn, (uint16_t) rtp->lastrxseqno);
|
||||||
|
}
|
||||||
|
|
||||||
|
#ifdef USE_PJPROJECT
|
||||||
|
@@ -2546,10 +2569,7 @@
|
||||||
|
/* Set default parameters on the newly created RTP structure */
|
||||||
|
rtp->ssrc = ast_random();
|
||||||
|
rtp->seqno = ast_random() & 0xffff;
|
||||||
|
- rtp->strict_rtp_state = (strictrtp ? STRICT_RTP_LEARN : STRICT_RTP_OPEN);
|
||||||
|
- if (strictrtp) {
|
||||||
|
- rtp_learning_seq_init(&rtp->rtp_source_learn, (uint16_t)rtp->seqno);
|
||||||
|
- }
|
||||||
|
+ rtp->strict_rtp_state = (strictrtp ? STRICT_RTP_CLOSED : STRICT_RTP_OPEN);
|
||||||
|
|
||||||
|
/* Create a new socket for us to listen on and use */
|
||||||
|
if ((rtp->s =
|
||||||
|
@@ -3867,13 +3887,86 @@
|
||||||
|
return &rtp->f;
|
||||||
|
}
|
||||||
|
|
||||||
|
+static const char *rtcp_payload_type2str(unsigned int pt)
|
||||||
|
+{
|
||||||
|
+ const char *str;
|
||||||
|
+
|
||||||
|
+ switch (pt) {
|
||||||
|
+ case RTCP_PT_SR:
|
||||||
|
+ str = "Sender Report";
|
||||||
|
+ break;
|
||||||
|
+ case RTCP_PT_RR:
|
||||||
|
+ str = "Receiver Report";
|
||||||
|
+ break;
|
||||||
|
+ case RTCP_PT_FUR:
|
||||||
|
+ /* Full INTRA-frame Request / Fast Update Request */
|
||||||
|
+ str = "H.261 FUR";
|
||||||
|
+ break;
|
||||||
|
+ case RTCP_PT_SDES:
|
||||||
|
+ str = "Source Description";
|
||||||
|
+ break;
|
||||||
|
+ case RTCP_PT_BYE:
|
||||||
|
+ str = "BYE";
|
||||||
|
+ break;
|
||||||
|
+ default:
|
||||||
|
+ str = "Unknown";
|
||||||
|
+ break;
|
||||||
|
+ }
|
||||||
|
+ return str;
|
||||||
|
+}
|
||||||
|
+
|
||||||
|
+/*
|
||||||
|
+ * Unshifted RTCP header bit field masks
|
||||||
|
+ */
|
||||||
|
+#define RTCP_LENGTH_MASK 0xFFFF
|
||||||
|
+#define RTCP_PAYLOAD_TYPE_MASK 0xFF
|
||||||
|
+#define RTCP_REPORT_COUNT_MASK 0x1F
|
||||||
|
+#define RTCP_PADDING_MASK 0x01
|
||||||
|
+#define RTCP_VERSION_MASK 0x03
|
||||||
|
+
|
||||||
|
+/*
|
||||||
|
+ * RTCP header bit field shift offsets
|
||||||
|
+ */
|
||||||
|
+#define RTCP_LENGTH_SHIFT 0
|
||||||
|
+#define RTCP_PAYLOAD_TYPE_SHIFT 16
|
||||||
|
+#define RTCP_REPORT_COUNT_SHIFT 24
|
||||||
|
+#define RTCP_PADDING_SHIFT 29
|
||||||
|
+#define RTCP_VERSION_SHIFT 30
|
||||||
|
+
|
||||||
|
+#define RTCP_VERSION 2U
|
||||||
|
+#define RTCP_VERSION_SHIFTED (RTCP_VERSION << RTCP_VERSION_SHIFT)
|
||||||
|
+#define RTCP_VERSION_MASK_SHIFTED (RTCP_VERSION_MASK << RTCP_VERSION_SHIFT)
|
||||||
|
+
|
||||||
|
+/*
|
||||||
|
+ * RTCP first packet record validity header mask and value.
|
||||||
|
+ *
|
||||||
|
+ * RFC3550 intentionally defines the encoding of RTCP_PT_SR and RTCP_PT_RR
|
||||||
|
+ * such that they differ in the least significant bit. Either of these two
|
||||||
|
+ * payload types MUST be the first RTCP packet record in a compound packet.
|
||||||
|
+ *
|
||||||
|
+ * RFC3550 checks the padding bit in the algorithm they use to check the
|
||||||
|
+ * RTCP packet for validity. However, we aren't masking the padding bit
|
||||||
|
+ * to check since we don't know if it is a compound RTCP packet or not.
|
||||||
|
+ */
|
||||||
|
+#define RTCP_VALID_MASK (RTCP_VERSION_MASK_SHIFTED | (((RTCP_PAYLOAD_TYPE_MASK & ~0x1)) << RTCP_PAYLOAD_TYPE_SHIFT))
|
||||||
|
+#define RTCP_VALID_VALUE (RTCP_VERSION_SHIFTED | (RTCP_PT_SR << RTCP_PAYLOAD_TYPE_SHIFT))
|
||||||
|
+
|
||||||
|
+#define RTCP_SR_BLOCK_WORD_LENGTH 5
|
||||||
|
+#define RTCP_RR_BLOCK_WORD_LENGTH 6
|
||||||
|
+#define RTCP_HEADER_SSRC_LENGTH 2
|
||||||
|
+
|
||||||
|
static struct ast_frame *ast_rtcp_read(struct ast_rtp_instance *instance)
|
||||||
|
{
|
||||||
|
struct ast_rtp *rtp = ast_rtp_instance_get_data(instance);
|
||||||
|
struct ast_sockaddr addr;
|
||||||
|
unsigned char rtcpdata[8192 + AST_FRIENDLY_OFFSET];
|
||||||
|
unsigned int *rtcpheader = (unsigned int *)(rtcpdata + AST_FRIENDLY_OFFSET);
|
||||||
|
- int res, packetwords, position = 0;
|
||||||
|
+ int res;
|
||||||
|
+ unsigned int packetwords;
|
||||||
|
+ unsigned int position;
|
||||||
|
+ unsigned int first_word;
|
||||||
|
+ /*! True if we have seen an acceptable SSRC to learn the remote RTCP address */
|
||||||
|
+ unsigned int ssrc_seen;
|
||||||
|
struct ast_frame *f = &ast_null_frame;
|
||||||
|
|
||||||
|
/* Read in RTCP data from the socket */
|
||||||
|
@@ -3918,56 +4011,170 @@
|
||||||
|
|
||||||
|
packetwords = res / 4;
|
||||||
|
|
||||||
|
- ast_debug(1, "Got RTCP report of %d bytes\n", res);
|
||||||
|
+ ast_debug(1, "Got RTCP report of %d bytes from %s\n",
|
||||||
|
+ res, ast_sockaddr_stringify(&addr));
|
||||||
|
|
||||||
|
+ /*
|
||||||
|
+ * Validate the RTCP packet according to an adapted and slightly
|
||||||
|
+ * modified RFC3550 validation algorithm.
|
||||||
|
+ */
|
||||||
|
+ if (packetwords < RTCP_HEADER_SSRC_LENGTH) {
|
||||||
|
+ ast_debug(1, "%p -- RTCP from %s: Frame size (%u words) is too short\n",
|
||||||
|
+ rtp, ast_sockaddr_stringify(&addr), packetwords);
|
||||||
|
+ return &ast_null_frame;
|
||||||
|
+ }
|
||||||
|
+ position = 0;
|
||||||
|
+ first_word = ntohl(rtcpheader[position]);
|
||||||
|
+ if ((first_word & RTCP_VALID_MASK) != RTCP_VALID_VALUE) {
|
||||||
|
+ ast_debug(1, "%p -- RTCP from %s: Failed first packet validity check\n",
|
||||||
|
+ rtp, ast_sockaddr_stringify(&addr));
|
||||||
|
+ return &ast_null_frame;
|
||||||
|
+ }
|
||||||
|
+ do {
|
||||||
|
+ position += ((first_word >> RTCP_LENGTH_SHIFT) & RTCP_LENGTH_MASK) + 1;
|
||||||
|
+ if (packetwords <= position) {
|
||||||
|
+ break;
|
||||||
|
+ }
|
||||||
|
+ first_word = ntohl(rtcpheader[position]);
|
||||||
|
+ } while ((first_word & RTCP_VERSION_MASK_SHIFTED) == RTCP_VERSION_SHIFTED);
|
||||||
|
+ if (position != packetwords) {
|
||||||
|
+ ast_debug(1, "%p -- RTCP from %s: Failed packet version or length check\n",
|
||||||
|
+ rtp, ast_sockaddr_stringify(&addr));
|
||||||
|
+ return &ast_null_frame;
|
||||||
|
+ }
|
||||||
|
+
|
||||||
|
+ /*
|
||||||
|
+ * Note: RFC3605 points out that true NAT (vs NAPT) can cause RTCP
|
||||||
|
+ * to have a different IP address and port than RTP. Otherwise, when
|
||||||
|
+ * strictrtp is enabled we could reject RTCP packets not coming from
|
||||||
|
+ * the learned RTP IP address if it is available.
|
||||||
|
+ */
|
||||||
|
+
|
||||||
|
+ /*
|
||||||
|
+ * strictrtp safety needs SSRC to match before we use the
|
||||||
|
+ * sender's address for symmetrical RTP to send our RTCP
|
||||||
|
+ * reports.
|
||||||
|
+ *
|
||||||
|
+ * If strictrtp is not enabled then claim to have already seen
|
||||||
|
+ * a matching SSRC so we'll accept this packet's address for
|
||||||
|
+ * symmetrical RTP.
|
||||||
|
+ */
|
||||||
|
+ ssrc_seen = rtp->strict_rtp_state == STRICT_RTP_OPEN;
|
||||||
|
+
|
||||||
|
+ position = 0;
|
||||||
|
while (position < packetwords) {
|
||||||
|
- int i, pt, rc;
|
||||||
|
- unsigned int length, dlsr, lsr, msw, lsw, comp;
|
||||||
|
+ unsigned int i;
|
||||||
|
+ unsigned int pt;
|
||||||
|
+ unsigned int rc;
|
||||||
|
+ unsigned int ssrc;
|
||||||
|
+ /*! True if the ssrc value we have is valid and not garbage because it doesn't exist. */
|
||||||
|
+ unsigned int ssrc_valid;
|
||||||
|
+ unsigned int length;
|
||||||
|
+ unsigned int min_length;
|
||||||
|
+ unsigned int dlsr, lsr, msw, lsw, comp;
|
||||||
|
struct timeval now;
|
||||||
|
double rttsec, reported_jitter, reported_normdev_jitter_current, normdevrtt_current, reported_lost, reported_normdev_lost_current;
|
||||||
|
uint64_t rtt = 0;
|
||||||
|
|
||||||
|
i = position;
|
||||||
|
- length = ntohl(rtcpheader[i]);
|
||||||
|
- pt = (length & 0xff0000) >> 16;
|
||||||
|
- rc = (length & 0x1f000000) >> 24;
|
||||||
|
- length &= 0xffff;
|
||||||
|
+ first_word = ntohl(rtcpheader[i]);
|
||||||
|
+ pt = (first_word >> RTCP_PAYLOAD_TYPE_SHIFT) & RTCP_PAYLOAD_TYPE_MASK;
|
||||||
|
+ rc = (first_word >> RTCP_REPORT_COUNT_SHIFT) & RTCP_REPORT_COUNT_MASK;
|
||||||
|
+ /* RFC3550 says 'length' is the number of words in the packet - 1 */
|
||||||
|
+ length = ((first_word >> RTCP_LENGTH_SHIFT) & RTCP_LENGTH_MASK) + 1;
|
||||||
|
|
||||||
|
- if ((i + length) > packetwords) {
|
||||||
|
- if (rtpdebug)
|
||||||
|
- ast_debug(1, "RTCP Read too short\n");
|
||||||
|
+ /* Check expected RTCP packet record length */
|
||||||
|
+ min_length = RTCP_HEADER_SSRC_LENGTH;
|
||||||
|
+ switch (pt) {
|
||||||
|
+ case RTCP_PT_SR:
|
||||||
|
+ min_length += RTCP_SR_BLOCK_WORD_LENGTH;
|
||||||
|
+ /* fall through */
|
||||||
|
+ case RTCP_PT_RR:
|
||||||
|
+ min_length += (rc * RTCP_RR_BLOCK_WORD_LENGTH);
|
||||||
|
+ break;
|
||||||
|
+ case RTCP_PT_FUR:
|
||||||
|
+ break;
|
||||||
|
+ case RTCP_PT_SDES:
|
||||||
|
+ case RTCP_PT_BYE:
|
||||||
|
+ /*
|
||||||
|
+ * There may not be a SSRC/CSRC present. The packet is
|
||||||
|
+ * useless but still valid if it isn't present.
|
||||||
|
+ *
|
||||||
|
+ * We don't know what min_length should be so disable the check
|
||||||
|
+ */
|
||||||
|
+ min_length = length;
|
||||||
|
+ break;
|
||||||
|
+ default:
|
||||||
|
+ ast_debug(1, "%p -- RTCP from %s: %u(%s) skipping record\n",
|
||||||
|
+ rtp, ast_sockaddr_stringify(&addr), pt, rtcp_payload_type2str(pt));
|
||||||
|
+ if (rtcp_debug_test_addr(&addr)) {
|
||||||
|
+ ast_verbose("\n");
|
||||||
|
+ ast_verbose("RTCP from %s: %u(%s) skipping record\n",
|
||||||
|
+ ast_sockaddr_stringify(&addr), pt, rtcp_payload_type2str(pt));
|
||||||
|
+ }
|
||||||
|
+ position += length;
|
||||||
|
+ continue;
|
||||||
|
+ }
|
||||||
|
+ if (length < min_length) {
|
||||||
|
+ ast_debug(1, "%p -- RTCP from %s: %u(%s) length field less than expected minimum. Min:%u Got:%u\n",
|
||||||
|
+ rtp, ast_sockaddr_stringify(&addr), pt, rtcp_payload_type2str(pt),
|
||||||
|
+ min_length - 1, length - 1);
|
||||||
|
return &ast_null_frame;
|
||||||
|
}
|
||||||
|
|
||||||
|
- if ((rtp->strict_rtp_state != STRICT_RTP_OPEN) && (ntohl(rtcpheader[i + 1]) != rtp->themssrc)) {
|
||||||
|
- /* Skip over this RTCP record as it does not contain the correct SSRC */
|
||||||
|
- position += (length + 1);
|
||||||
|
- ast_debug(1, "%p -- Received RTCP report from %s, dropping due to strict RTP protection. Received SSRC '%u' but expected '%u'\n",
|
||||||
|
- rtp, ast_sockaddr_stringify(&addr), ntohl(rtcpheader[i + 1]), rtp->themssrc);
|
||||||
|
- continue;
|
||||||
|
- }
|
||||||
|
-
|
||||||
|
- if (ast_rtp_instance_get_prop(instance, AST_RTP_PROPERTY_NAT)) {
|
||||||
|
- /* Send to whoever sent to us */
|
||||||
|
- if (ast_sockaddr_cmp(&rtp->rtcp->them, &addr)) {
|
||||||
|
- ast_sockaddr_copy(&rtp->rtcp->them, &addr);
|
||||||
|
- if (rtpdebug)
|
||||||
|
- ast_debug(0, "RTCP NAT: Got RTCP from other end. Now sending to address %s\n",
|
||||||
|
- ast_sockaddr_stringify(&rtp->rtcp->them));
|
||||||
|
- }
|
||||||
|
+ /* Get the RTCP record SSRC if defined for the record */
|
||||||
|
+ ssrc_valid = 1;
|
||||||
|
+ switch (pt) {
|
||||||
|
+ case RTCP_PT_SR:
|
||||||
|
+ case RTCP_PT_RR:
|
||||||
|
+ case RTCP_PT_FUR:
|
||||||
|
+ ssrc = ntohl(rtcpheader[i + 1]);
|
||||||
|
+ break;
|
||||||
|
+ case RTCP_PT_SDES:
|
||||||
|
+ case RTCP_PT_BYE:
|
||||||
|
+ default:
|
||||||
|
+ ssrc = 0;
|
||||||
|
+ ssrc_valid = 0;
|
||||||
|
+ break;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (rtcp_debug_test_addr(&addr)) {
|
||||||
|
- ast_verbose("\n\nGot RTCP from %s\n",
|
||||||
|
- ast_sockaddr_stringify(&addr));
|
||||||
|
- ast_verbose("PT: %d(%s)\n", pt, (pt == 200) ? "Sender Report" : (pt == 201) ? "Receiver Report" : (pt == 192) ? "H.261 FUR" : "Unknown");
|
||||||
|
- ast_verbose("Reception reports: %d\n", rc);
|
||||||
|
- ast_verbose("SSRC of sender: %u\n", rtcpheader[i + 1]);
|
||||||
|
+ ast_verbose("\n");
|
||||||
|
+ ast_verbose("RTCP from %s\n", ast_sockaddr_stringify(&addr));
|
||||||
|
+ ast_verbose("PT: %u(%s)\n", pt, rtcp_payload_type2str(pt));
|
||||||
|
+ ast_verbose("Reception reports: %u\n", rc);
|
||||||
|
+ ast_verbose("SSRC of sender: %u\n", ssrc);
|
||||||
|
}
|
||||||
|
|
||||||
|
- i += 2; /* Advance past header and ssrc */
|
||||||
|
+ if (ssrc_valid && rtp->themssrc_valid) {
|
||||||
|
+ if (ssrc != rtp->themssrc) {
|
||||||
|
+ /*
|
||||||
|
+ * Skip over this RTCP record as it does not contain the
|
||||||
|
+ * correct SSRC. We should not act upon RTCP records
|
||||||
|
+ * for a different stream.
|
||||||
|
+ */
|
||||||
|
+ position += length;
|
||||||
|
+ ast_debug(1, "%p -- RTCP from %s: Skipping record, received SSRC '%u' != expected '%u'\n",
|
||||||
|
+ rtp, ast_sockaddr_stringify(&addr), ssrc, rtp->themssrc);
|
||||||
|
+ continue;
|
||||||
|
+ }
|
||||||
|
+ ssrc_seen = 1;
|
||||||
|
+ }
|
||||||
|
+
|
||||||
|
+ if (ssrc_seen && ast_rtp_instance_get_prop(instance, AST_RTP_PROPERTY_NAT)) {
|
||||||
|
+ /* Send to whoever sent to us */
|
||||||
|
+ if (ast_sockaddr_cmp(&rtp->rtcp->them, &addr)) {
|
||||||
|
+ ast_sockaddr_copy(&rtp->rtcp->them, &addr);
|
||||||
|
+ if (rtpdebug) {
|
||||||
|
+ ast_debug(0, "RTCP NAT: Got RTCP from other end. Now sending to address %s\n",
|
||||||
|
+ ast_sockaddr_stringify(&addr));
|
||||||
|
+ }
|
||||||
|
+ }
|
||||||
|
+ }
|
||||||
|
+
|
||||||
|
+ i += RTCP_HEADER_SSRC_LENGTH; /* Advance past header and ssrc */
|
||||||
|
if (rc == 0 && pt == RTCP_PT_RR) { /* We're receiving a receiver report with no reports, which is ok */
|
||||||
|
- position += (length + 1);
|
||||||
|
+ position += length;
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
|
@@ -3983,7 +4190,7 @@
|
||||||
|
ast_verbose("RTP timestamp: %lu\n", (unsigned long) ntohl(rtcpheader[i + 2]));
|
||||||
|
ast_verbose("SPC: %lu\tSOC: %lu\n", (unsigned long) ntohl(rtcpheader[i + 3]), (unsigned long) ntohl(rtcpheader[i + 4]));
|
||||||
|
}
|
||||||
|
- i += 5;
|
||||||
|
+ i += RTCP_SR_BLOCK_WORD_LENGTH;
|
||||||
|
if (rc < 1)
|
||||||
|
break;
|
||||||
|
/* Intentional fall through */
|
||||||
|
@@ -4153,21 +4360,18 @@
|
||||||
|
case RTCP_PT_SDES:
|
||||||
|
if (rtcp_debug_test_addr(&addr))
|
||||||
|
ast_verbose("Received an SDES from %s\n",
|
||||||
|
- ast_sockaddr_stringify(&rtp->rtcp->them));
|
||||||
|
+ ast_sockaddr_stringify(&addr));
|
||||||
|
break;
|
||||||
|
case RTCP_PT_BYE:
|
||||||
|
if (rtcp_debug_test_addr(&addr))
|
||||||
|
ast_verbose("Received a BYE from %s\n",
|
||||||
|
- ast_sockaddr_stringify(&rtp->rtcp->them));
|
||||||
|
+ ast_sockaddr_stringify(&addr));
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
- ast_debug(1, "Unknown RTCP packet (pt=%d) received from %s\n",
|
||||||
|
- pt, ast_sockaddr_stringify(&rtp->rtcp->them));
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
- position += (length + 1);
|
||||||
|
+ position += length;
|
||||||
|
}
|
||||||
|
-
|
||||||
|
rtp->rtcp->rtcp_info = 1;
|
||||||
|
|
||||||
|
return f;
|
||||||
|
@@ -4344,39 +4548,156 @@
|
||||||
|
return &ast_null_frame;
|
||||||
|
}
|
||||||
|
|
||||||
|
+ /* If the version is not what we expected by this point then just drop the packet */
|
||||||
|
+ if (version != 2) {
|
||||||
|
+ return &ast_null_frame;
|
||||||
|
+ }
|
||||||
|
+
|
||||||
|
/* If strict RTP protection is enabled see if we need to learn the remote address or if we need to drop the packet */
|
||||||
|
- if (rtp->strict_rtp_state == STRICT_RTP_LEARN) {
|
||||||
|
- if (!ast_sockaddr_cmp(&rtp->strict_rtp_address, &addr)) {
|
||||||
|
- /* We are learning a new address but have received traffic from the existing address,
|
||||||
|
- * accept it but reset the current learning for the new source so it only takes over
|
||||||
|
- * once sufficient traffic has been received. */
|
||||||
|
- rtp_learning_seq_init(&rtp->rtp_source_learn, seqno);
|
||||||
|
+ switch (rtp->strict_rtp_state) {
|
||||||
|
+ case STRICT_RTP_LEARN:
|
||||||
|
+ /*
|
||||||
|
+ * Scenario setup:
|
||||||
|
+ * PartyA -- Ast1 -- Ast2 -- PartyB
|
||||||
|
+ *
|
||||||
|
+ * The learning timeout is necessary for Ast1 to handle the above
|
||||||
|
+ * setup where PartyA calls PartyB and Ast2 initiates direct media
|
||||||
|
+ * between Ast1 and PartyB. Ast1 may lock onto the Ast2 stream and
|
||||||
|
+ * never learn the PartyB stream when it starts. The timeout makes
|
||||||
|
+ * Ast1 stay in the learning state long enough to see and learn the
|
||||||
|
+ * RTP stream from PartyB.
|
||||||
|
+ *
|
||||||
|
+ * To mitigate against attack, the learning state cannot switch
|
||||||
|
+ * streams while there are competing streams. The competing streams
|
||||||
|
+ * interfere with each other's qualification. Once we accept a
|
||||||
|
+ * stream and reach the timeout, an attacker cannot interfere
|
||||||
|
+ * anymore.
|
||||||
|
+ *
|
||||||
|
+ * Here are a few scenarios and each one assumes that the streams
|
||||||
|
+ * are continuous:
|
||||||
|
+ *
|
||||||
|
+ * 1) We already have a known stream source address and the known
|
||||||
|
+ * stream wants to change to a new source address. An attacking
|
||||||
|
+ * stream will block learning the new stream source. After the
|
||||||
|
+ * timeout we re-lock onto the original stream source address which
|
||||||
|
+ * likely went away. The result is one way audio.
|
||||||
|
+ *
|
||||||
|
+ * 2) We already have a known stream source address and the known
|
||||||
|
+ * stream doesn't want to change source addresses. An attacking
|
||||||
|
+ * stream will not be able to replace the known stream. After the
|
||||||
|
+ * timeout we re-lock onto the known stream. The call is not
|
||||||
|
+ * affected.
|
||||||
|
+ *
|
||||||
|
+ * 3) We don't have a known stream source address. This presumably
|
||||||
|
+ * is the start of a call. Competing streams will result in staying
|
||||||
|
+ * in learning mode until a stream becomes the victor and we reach
|
||||||
|
+ * the timeout. We cannot exit learning if we have no known stream
|
||||||
|
+ * to lock onto. The result is one way audio until there is a victor.
|
||||||
|
+ *
|
||||||
|
+ * If we learn a stream source address before the timeout we will be
|
||||||
|
+ * in scenario 1) or 2) when a competing stream starts.
|
||||||
|
+ */
|
||||||
|
+ if (!ast_sockaddr_isnull(&rtp->strict_rtp_address)
|
||||||
|
+ && STRICT_RTP_LEARN_TIMEOUT < ast_tvdiff_ms(ast_tvnow(), rtp->rtp_source_learn.start)) {
|
||||||
|
+ ast_verb(4, "%p -- Strict RTP learning complete - Locking on source address %s\n",
|
||||||
|
+ rtp, ast_sockaddr_stringify(&rtp->strict_rtp_address));
|
||||||
|
+ rtp->strict_rtp_state = STRICT_RTP_CLOSED;
|
||||||
|
+
|
||||||
|
+ /*
|
||||||
|
+ * Clear the alternate remote address after learning.
|
||||||
|
+ *
|
||||||
|
+ * We should not leave this address laying around.
|
||||||
|
+ * It gets set only on a chan_sip reINVITE glare.
|
||||||
|
+ * We don't want a stale address interfering with
|
||||||
|
+ * the next learning time.
|
||||||
|
+ */
|
||||||
|
+ ast_sockaddr_setnull(&rtp->alt_rtp_address);
|
||||||
|
} else {
|
||||||
|
- /* Hmm, not the strict address. Perhaps we're getting audio from the alternate? */
|
||||||
|
- if (!ast_sockaddr_cmp(&rtp->alt_rtp_address, &addr)) {
|
||||||
|
- /* ooh, we did! You're now the new expected address, son! */
|
||||||
|
- ast_sockaddr_copy(&rtp->strict_rtp_address,
|
||||||
|
- &addr);
|
||||||
|
- } else {
|
||||||
|
- /* Start trying to learn from the new address. If we pass a probationary period with
|
||||||
|
- * it, that means we've stopped getting RTP from the original source and we should
|
||||||
|
- * switch to it.
|
||||||
|
+ if (!ast_sockaddr_cmp(&rtp->strict_rtp_address, &addr)) {
|
||||||
|
+ /*
|
||||||
|
+ * We are open to learning a new address but have received
|
||||||
|
+ * traffic from the current address, accept it and reset
|
||||||
|
+ * the learning counts for a new source. When no more
|
||||||
|
+ * current source packets arrive a new source can take over
|
||||||
|
+ * once sufficient traffic is received.
|
||||||
|
*/
|
||||||
|
- if (rtp_learning_rtp_seq_update(&rtp->rtp_source_learn, seqno)) {
|
||||||
|
- ast_debug(1, "%p -- Received RTP packet from %s, dropping due to strict RTP protection. Will switch to it in %d packets\n",
|
||||||
|
- rtp, ast_sockaddr_stringify(&addr), rtp->rtp_source_learn.packets);
|
||||||
|
- return &ast_null_frame;
|
||||||
|
- }
|
||||||
|
- ast_sockaddr_copy(&rtp->strict_rtp_address, &addr);
|
||||||
|
+ rtp_learning_seq_init(&rtp->rtp_source_learn, seqno);
|
||||||
|
+ break;
|
||||||
|
}
|
||||||
|
|
||||||
|
- ast_verb(4, "%p -- Probation passed - setting RTP source address to %s\n", rtp, ast_sockaddr_stringify(&addr));
|
||||||
|
- rtp->strict_rtp_state = STRICT_RTP_CLOSED;
|
||||||
|
+ /*
|
||||||
|
+ * We give preferential treatment to the requested remote address
|
||||||
|
+ * (negotiated SDP address) where we are to send our RTP. However,
|
||||||
|
+ * the other end has no obligation to send from that address even
|
||||||
|
+ * though it is practically a requirement when NAT is involved.
|
||||||
|
+ */
|
||||||
|
+ if (!ast_sockaddr_cmp(&remote_address, &addr)) {
|
||||||
|
+ /* Accept the negotiated remote RTP stream as the source */
|
||||||
|
+ ast_verb(4, "%p -- Strict RTP switching to RTP remote address %s as source\n",
|
||||||
|
+ rtp, ast_sockaddr_stringify(&addr));
|
||||||
|
+ ast_sockaddr_copy(&rtp->strict_rtp_address, &addr);
|
||||||
|
+ rtp_learning_seq_init(&rtp->rtp_source_learn, seqno);
|
||||||
|
+ break;
|
||||||
|
+ }
|
||||||
|
+ /* Treat the alternate remote address as another negotiated SDP address. */
|
||||||
|
+ if (!ast_sockaddr_isnull(&rtp->alt_rtp_address)
|
||||||
|
+ && !ast_sockaddr_cmp(&rtp->alt_rtp_address, &addr)) {
|
||||||
|
+ /* ooh, we did! You're now the new expected address, son! */
|
||||||
|
+ ast_verb(4, "%p -- Strict RTP switching to RTP alt remote address %s as source\n",
|
||||||
|
+ rtp, ast_sockaddr_stringify(&addr));
|
||||||
|
+ ast_sockaddr_copy(&rtp->strict_rtp_address, &addr);
|
||||||
|
+ rtp_learning_seq_init(&rtp->rtp_source_learn, seqno);
|
||||||
|
+ break;
|
||||||
|
+ }
|
||||||
|
+
|
||||||
|
+ /*
|
||||||
|
+ * Trying to learn a new address. If we pass a probationary period
|
||||||
|
+ * with it, that means we've stopped getting RTP from the original
|
||||||
|
+ * source and we should switch to it.
|
||||||
|
+ */
|
||||||
|
+ if (!ast_sockaddr_cmp(&rtp->rtp_source_learn.proposed_address, &addr)) {
|
||||||
|
+ if (!rtp_learning_rtp_seq_update(&rtp->rtp_source_learn, seqno)) {
|
||||||
|
+ /* Accept the new RTP stream */
|
||||||
|
+ ast_verb(4, "%p -- Strict RTP switching source address to %s\n",
|
||||||
|
+ rtp, ast_sockaddr_stringify(&addr));
|
||||||
|
+ ast_sockaddr_copy(&rtp->strict_rtp_address, &addr);
|
||||||
|
+ rtp_learning_seq_init(&rtp->rtp_source_learn, seqno);
|
||||||
|
+ break;
|
||||||
|
+ }
|
||||||
|
+ /* Not ready to accept the RTP stream candidate */
|
||||||
|
+ ast_debug(1, "%p -- Received RTP packet from %s, dropping due to strict RTP protection. Will switch to it in %d packets.\n",
|
||||||
|
+ rtp, ast_sockaddr_stringify(&addr), rtp->rtp_source_learn.packets);
|
||||||
|
+ } else {
|
||||||
|
+ /*
|
||||||
|
+ * This is either an attacking stream or
|
||||||
|
+ * the start of the expected new stream.
|
||||||
|
+ */
|
||||||
|
+ ast_sockaddr_copy(&rtp->rtp_source_learn.proposed_address, &addr);
|
||||||
|
+ rtp_learning_seq_init(&rtp->rtp_source_learn, seqno);
|
||||||
|
+ ast_debug(1, "%p -- Received RTP packet from %s, dropping due to strict RTP protection. Qualifying new stream.\n",
|
||||||
|
+ rtp, ast_sockaddr_stringify(&addr));
|
||||||
|
+ }
|
||||||
|
+ return &ast_null_frame;
|
||||||
|
}
|
||||||
|
- } else if (rtp->strict_rtp_state == STRICT_RTP_CLOSED && ast_sockaddr_cmp(&rtp->strict_rtp_address, &addr)) {
|
||||||
|
+ /* Fall through */
|
||||||
|
+ case STRICT_RTP_CLOSED:
|
||||||
|
+ /*
|
||||||
|
+ * We should not allow a stream address change if the SSRC matches
|
||||||
|
+ * once strictrtp learning is closed. Any kind of address change
|
||||||
|
+ * like this should have happened while we were in the learning
|
||||||
|
+ * state. We do not want to allow the possibility of an attacker
|
||||||
|
+ * interfering with the RTP stream after the learning period.
|
||||||
|
+ * An attacker could manage to get an RTCP packet redirected to
|
||||||
|
+ * them which can contain the SSRC value.
|
||||||
|
+ */
|
||||||
|
+ if (!ast_sockaddr_cmp(&rtp->strict_rtp_address, &addr)) {
|
||||||
|
+ break;
|
||||||
|
+ }
|
||||||
|
ast_debug(1, "%p -- Received RTP packet from %s, dropping due to strict RTP protection.\n",
|
||||||
|
rtp, ast_sockaddr_stringify(&addr));
|
||||||
|
return &ast_null_frame;
|
||||||
|
+ case STRICT_RTP_OPEN:
|
||||||
|
+ break;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* If symmetric RTP is enabled see if the remote side is not what we expected and change where we are sending audio */
|
||||||
|
@@ -4401,11 +4722,6 @@
|
||||||
|
return &ast_null_frame;
|
||||||
|
}
|
||||||
|
|
||||||
|
- /* If the version is not what we expected by this point then just drop the packet */
|
||||||
|
- if (version != 2) {
|
||||||
|
- return &ast_null_frame;
|
||||||
|
- }
|
||||||
|
-
|
||||||
|
/* Pull out the various other fields we will need */
|
||||||
|
payloadtype = (seqno & 0x7f0000) >> 16;
|
||||||
|
padding = seqno & (1 << 29);
|
||||||
|
@@ -4418,7 +4734,7 @@
|
||||||
|
|
||||||
|
AST_LIST_HEAD_INIT_NOLOCK(&frames);
|
||||||
|
/* Force a marker bit and change SSRC if the SSRC changes */
|
||||||
|
- if (rtp->rxssrc && rtp->rxssrc != ssrc) {
|
||||||
|
+ if (rtp->themssrc_valid && rtp->themssrc != ssrc) {
|
||||||
|
struct ast_frame *f, srcupdate = {
|
||||||
|
AST_FRAME_CONTROL,
|
||||||
|
.subclass.integer = AST_CONTROL_SRCCHANGE,
|
||||||
|
@@ -4445,8 +4761,8 @@
|
||||||
|
rtp->rtcp->received_prior = 0;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
-
|
||||||
|
- rtp->rxssrc = ssrc;
|
||||||
|
+ rtp->themssrc = ssrc; /* Record their SSRC to put in future RR */
|
||||||
|
+ rtp->themssrc_valid = 1;
|
||||||
|
|
||||||
|
/* Remove any padding bytes that may be present */
|
||||||
|
if (padding) {
|
||||||
|
@@ -4498,10 +4814,6 @@
|
||||||
|
|
||||||
|
prev_seqno = rtp->lastrxseqno;
|
||||||
|
rtp->lastrxseqno = seqno;
|
||||||
|
-
|
||||||
|
- if (!rtp->themssrc) {
|
||||||
|
- rtp->themssrc = ntohl(rtpheader[2]); /* Record their SSRC to put in future RR */
|
||||||
|
- }
|
||||||
|
|
||||||
|
if (rtp_debug_test_addr(&addr)) {
|
||||||
|
ast_verbose("Got RTP packet from %s (type %-2.2d, seq %-6.6u, ts %-6.6u, len %-6.6d)\n",
|
||||||
|
@@ -4771,13 +5083,14 @@
|
||||||
|
|
||||||
|
rtp->rxseqno = 0;
|
||||||
|
|
||||||
|
- if (strictrtp && rtp->strict_rtp_state != STRICT_RTP_OPEN && !ast_sockaddr_isnull(addr) &&
|
||||||
|
- ast_sockaddr_cmp(addr, &rtp->strict_rtp_address)) {
|
||||||
|
+ if (strictrtp && rtp->strict_rtp_state != STRICT_RTP_OPEN
|
||||||
|
+ && !ast_sockaddr_isnull(addr) && ast_sockaddr_cmp(addr, &rtp->strict_rtp_address)) {
|
||||||
|
/* We only need to learn a new strict source address if we've been told the source is
|
||||||
|
* changing to something different.
|
||||||
|
*/
|
||||||
|
- rtp->strict_rtp_state = STRICT_RTP_LEARN;
|
||||||
|
- rtp_learning_seq_init(&rtp->rtp_source_learn, rtp->seqno);
|
||||||
|
+ ast_verb(4, "%p -- Strict RTP learning after remote address set to: %s\n",
|
||||||
|
+ rtp, ast_sockaddr_stringify(addr));
|
||||||
|
+ rtp_learning_start(rtp);
|
||||||
|
}
|
||||||
|
|
||||||
|
return;
|
||||||
|
@@ -4805,7 +5118,23 @@
|
||||||
|
*/
|
||||||
|
ast_sockaddr_copy(&rtp->alt_rtp_address, addr);
|
||||||
|
|
||||||
|
- return;
|
||||||
|
+ if (strictrtp && rtp->strict_rtp_state != STRICT_RTP_OPEN
|
||||||
|
+ && !ast_sockaddr_isnull(addr) && ast_sockaddr_cmp(addr, &rtp->strict_rtp_address)) {
|
||||||
|
+ /*
|
||||||
|
+ * We only need to learn a new strict source address if we've been told the
|
||||||
|
+ * source may be changing to something different.
|
||||||
|
+ *
|
||||||
|
+ * XXX NOTE: The alternate source address is only set because of a reINVITE
|
||||||
|
+ * glare in chan_sip. A reINVITE glare is supposed to be retried after a
|
||||||
|
+ * backoff delay so it shouldn't be needed at all. However, I found this
|
||||||
|
+ * as the best description of why it was added:
|
||||||
|
+ * http://lists.digium.com/pipermail/asterisk-dev/2009-May/038348.html
|
||||||
|
+ * https://reviewboard.asterisk.org/r/252/
|
||||||
|
+ */
|
||||||
|
+ ast_verb(4, "%p -- Strict RTP learning after alternate remote address set to: %s\n",
|
||||||
|
+ rtp, ast_sockaddr_stringify(addr));
|
||||||
|
+ rtp_learning_start(rtp);
|
||||||
|
+ }
|
||||||
|
}
|
||||||
|
|
||||||
|
/*! \brief Write t140 redundacy frame
|
|
@ -1,12 +0,0 @@
|
||||||
--- a/channels/sip/sdp_crypto.c
|
|
||||||
+++ b/channels/sip/sdp_crypto.c
|
|
||||||
@@ -252,8 +252,7 @@
|
|
||||||
lifetime = strsep(&info, "|");
|
|
||||||
|
|
||||||
if (lifetime) {
|
|
||||||
+ ast_log(LOG_NOTICE, "Crypto life time unsupported: %s. Ignoring.\n", attr);
|
|
||||||
- ast_log(LOG_NOTICE, "Crypto life time unsupported: %s\n", attr);
|
|
||||||
- continue;
|
|
||||||
}
|
|
||||||
|
|
||||||
found = 1;
|
|
|
@ -1,22 +0,0 @@
|
||||||
Index: main/tcptls.c
|
|
||||||
===================================================================
|
|
||||||
--- a/main/tcptls.c (revision 433338)
|
|
||||||
+++ b/main/tcptls.c (working copy)
|
|
||||||
@@ -639,9 +639,15 @@
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
str = X509_NAME_ENTRY_get_data(X509_NAME_get_entry(name, pos));
|
|
||||||
- ASN1_STRING_to_UTF8(&str2, str);
|
|
||||||
+ ret = ASN1_STRING_to_UTF8(&str2, str);
|
|
||||||
+ if (ret < 0) {
|
|
||||||
+ continue;
|
|
||||||
+ }
|
|
||||||
+
|
|
||||||
if (str2) {
|
|
||||||
- if (!strcasecmp(tcptls_session->parent->hostname, (char *) str2)) {
|
|
||||||
+ if (strlen((char *) str2) != ret) {
|
|
||||||
+ ast_log(LOG_WARNING, "Invalid certificate common name length (contains NULL bytes?)\n");
|
|
||||||
+ } else if (!strcasecmp(tcptls_session->parent->hostname, (char *) str2)) {
|
|
||||||
found = 1;
|
|
||||||
}
|
|
||||||
ast_debug(3, "SSL Common Name compare s1='%s' s2='%s'\n", tcptls_session->parent->hostname, str2);
|
|
11
net/asterisk-13.x/Config.in
Normal file
11
net/asterisk-13.x/Config.in
Normal file
|
@ -0,0 +1,11 @@
|
||||||
|
menu "Advanced configuration"
|
||||||
|
depends on PACKAGE_asterisk13
|
||||||
|
|
||||||
|
config ASTERISK13_LOW_MEMORY
|
||||||
|
bool "Optimize Asterisk 13 for low memory usage"
|
||||||
|
default n
|
||||||
|
help
|
||||||
|
Warning: this feature is known to cause problems with some modules.
|
||||||
|
Disable it if you experience problems like segmentation faults.
|
||||||
|
|
||||||
|
endmenu
|
|
@ -1,6 +1,6 @@
|
||||||
#
|
#
|
||||||
# Copyright (C) 2015 OpenWrt.org
|
# Copyright (C) 2016 - 2018 OpenWrt.org
|
||||||
# Copyright (C) 2015 Cesnet, z.s.p.o.
|
# Copyright (C) 2016 Cesnet, z.s.p.o.
|
||||||
#
|
#
|
||||||
# This is free software, licensed under the GNU General Public License v2.
|
# This is free software, licensed under the GNU General Public License v2.
|
||||||
# See /LICENSE for more information.
|
# See /LICENSE for more information.
|
||||||
|
@ -9,19 +9,19 @@
|
||||||
include $(TOPDIR)/rules.mk
|
include $(TOPDIR)/rules.mk
|
||||||
|
|
||||||
PKG_NAME:=asterisk13
|
PKG_NAME:=asterisk13
|
||||||
PKG_VERSION:=13.3.2
|
PKG_VERSION:=13.19.2
|
||||||
PKG_RELEASE:=2
|
PKG_RELEASE:=2
|
||||||
|
|
||||||
PKG_SOURCE:=asterisk-$(PKG_VERSION).tar.gz
|
PKG_SOURCE:=asterisk-$(PKG_VERSION).tar.gz
|
||||||
PKG_SOURCE_URL:=http://downloads.asterisk.org/pub/telephony/asterisk/releases/
|
PKG_SOURCE_URL:=https://downloads.asterisk.org/pub/telephony/asterisk/releases/
|
||||||
PKG_MD5SUM:=afc8a5b7fc239c7aa5692b563d7e6ed2
|
PKG_MD5SUM:=3906b9fd37d02e93c72f0030fd7919c6
|
||||||
|
|
||||||
PKG_BUILD_DIR=$(BUILD_DIR)/asterisk-$(PKG_VERSION)
|
PKG_BUILD_DIR:=$(BUILD_DIR)/asterisk-$(PKG_VERSION)
|
||||||
PKG_BUILD_DEPENDS:=libxml2/host
|
PKG_BUILD_DEPENDS:=libxml2/host
|
||||||
|
|
||||||
PKG_LICENSE:=GPL-2.0
|
PKG_LICENSE:=GPL-2.0
|
||||||
PKG_LICENSE_FILES:=COPYING LICENSE
|
PKG_LICENSE_FILES:=COPYING LICENSE
|
||||||
PKG_MAINTAINER:=Jiri Slachta <slachta@cesnet.cz>
|
PKG_MAINTAINER:=Jiri Slachta <jiri@slachta.eu>
|
||||||
|
|
||||||
include $(INCLUDE_DIR)/package.mk
|
include $(INCLUDE_DIR)/package.mk
|
||||||
|
|
||||||
|
@ -37,7 +37,7 @@ endef
|
||||||
|
|
||||||
define Package/asterisk13/install/lib
|
define Package/asterisk13/install/lib
|
||||||
$(INSTALL_DIR) $(1)/usr/lib
|
$(INSTALL_DIR) $(1)/usr/lib
|
||||||
$(INSTALL_BIN) $(PKG_INSTALL_DIR)/usr/lib/$(2).so* $(1)/usr/lib/
|
$(CP) $(PKG_INSTALL_DIR)/usr/lib/$(2).so* $(1)/usr/lib/
|
||||||
endef
|
endef
|
||||||
|
|
||||||
define Package/asterisk13/install/sbin
|
define Package/asterisk13/install/sbin
|
||||||
|
@ -46,8 +46,12 @@ define Package/asterisk13/install/sbin
|
||||||
endef
|
endef
|
||||||
|
|
||||||
define Package/asterisk13/install/sounds
|
define Package/asterisk13/install/sounds
|
||||||
$(INSTALL_DIR) $(1)/usr/lib/asterisk/sounds/
|
$(INSTALL_DIR) $(1)/usr/share/asterisk/sounds/
|
||||||
$(CP) $(PKG_INSTALL_DIR)/usr/lib/asterisk/sounds/en/$(2) $(1)/usr/lib/asterisk/sounds/
|
$(CP) $(PKG_INSTALL_DIR)/usr/share/asterisk/sounds/en/$(2) $(1)/usr/share/asterisk/sounds/
|
||||||
|
endef
|
||||||
|
|
||||||
|
define Package/$(PKG_NAME)/config
|
||||||
|
source "$(SOURCE)/Config.in"
|
||||||
endef
|
endef
|
||||||
|
|
||||||
define BuildAsterisk13Module
|
define BuildAsterisk13Module
|
||||||
|
@ -58,7 +62,7 @@ define BuildAsterisk13Module
|
||||||
endef
|
endef
|
||||||
|
|
||||||
define Package/asterisk13-$(1)/conffiles
|
define Package/asterisk13-$(1)/conffiles
|
||||||
$(foreach c,$(5),/etc/asterisk/$(c))
|
$(subst $(space),$(newline),$(foreach c,$(5),/etc/asterisk/$(c)))
|
||||||
endef
|
endef
|
||||||
|
|
||||||
define Package/asterisk13-$(1)/description
|
define Package/asterisk13-$(1)/description
|
||||||
|
@ -80,6 +84,7 @@ define Package/asterisk13/Default
|
||||||
SECTION:=net
|
SECTION:=net
|
||||||
CATEGORY:=Network
|
CATEGORY:=Network
|
||||||
URL:=http://www.asterisk.org/
|
URL:=http://www.asterisk.org/
|
||||||
|
CONFLICTS:=asterisk11 asterisk18
|
||||||
endef
|
endef
|
||||||
|
|
||||||
define Package/asterisk13/Default/description
|
define Package/asterisk13/Default/description
|
||||||
|
@ -93,7 +98,7 @@ define Package/asterisk13
|
||||||
$(call Package/asterisk13/Default)
|
$(call Package/asterisk13/Default)
|
||||||
TITLE:=Complete open source PBX, v$(PKG_VERSION)
|
TITLE:=Complete open source PBX, v$(PKG_VERSION)
|
||||||
MENU:=1
|
MENU:=1
|
||||||
DEPENDS:=+jansson +libncurses +libopenssl +libpopt +libsqlite3 +libstdcpp +libuuid +libxml2 +libxslt +zlib
|
DEPENDS:=+jansson +libncurses +libopenssl +libpopt +librt +libsqlite3 +libstdcpp +libuuid +libxml2 +libxslt +zlib
|
||||||
endef
|
endef
|
||||||
|
|
||||||
define Package/asterisk13/description
|
define Package/asterisk13/description
|
||||||
|
@ -103,17 +108,23 @@ endef
|
||||||
define Package/asterisk13/conffiles
|
define Package/asterisk13/conffiles
|
||||||
/etc/asterisk/asterisk.conf
|
/etc/asterisk/asterisk.conf
|
||||||
/etc/asterisk/acl.conf
|
/etc/asterisk/acl.conf
|
||||||
|
/etc/asterisk/cel.conf
|
||||||
/etc/asterisk/ccss.conf
|
/etc/asterisk/ccss.conf
|
||||||
/etc/asterisk/modules.conf
|
/etc/asterisk/cli.conf
|
||||||
|
/etc/asterisk/cli_permissions.conf
|
||||||
|
/etc/asterisk/codecs.conf
|
||||||
|
/etc/asterisk/dnsmgr.conf
|
||||||
|
/etc/asterisk/dsp.conf
|
||||||
/etc/asterisk/extconfig.conf
|
/etc/asterisk/extconfig.conf
|
||||||
/etc/asterisk/extensions.conf
|
/etc/asterisk/extensions.conf
|
||||||
/etc/asterisk/features.conf
|
/etc/asterisk/features.conf
|
||||||
|
/etc/asterisk/http.conf
|
||||||
/etc/asterisk/indications.conf
|
/etc/asterisk/indications.conf
|
||||||
/etc/asterisk/logger.conf
|
/etc/asterisk/logger.conf
|
||||||
/etc/asterisk/manager.conf
|
/etc/asterisk/manager.conf
|
||||||
/etc/asterisk/modules.conf
|
/etc/asterisk/modules.conf
|
||||||
/etc/asterisk/res_config_sqlite3.conf
|
/etc/asterisk/res_config_sqlite3.conf
|
||||||
/etc/asterisk/rtp.conf
|
/etc/asterisk/stasis.conf
|
||||||
/etc/asterisk/udptl.conf
|
/etc/asterisk/udptl.conf
|
||||||
/etc/asterisk/users.conf
|
/etc/asterisk/users.conf
|
||||||
/etc/default/asterisk
|
/etc/default/asterisk
|
||||||
|
@ -121,9 +132,10 @@ define Package/asterisk13/conffiles
|
||||||
endef
|
endef
|
||||||
|
|
||||||
AST_CFG_FILES:= \
|
AST_CFG_FILES:= \
|
||||||
asterisk.conf acl.conf ccss.conf extconfig.conf \
|
asterisk.conf acl.conf cel.conf ccss.conf cli.conf \
|
||||||
extensions.conf features.conf indications.conf \
|
cli_permissions.conf codecs.conf dnsmgr.conf dsp.conf extconfig.conf \
|
||||||
logger.conf manager.conf modules.conf udptl.conf \
|
extensions.conf features.conf http.conf indications.conf \
|
||||||
|
logger.conf manager.conf modules.conf stasis.conf udptl.conf \
|
||||||
users.conf res_config_sqlite3.conf
|
users.conf res_config_sqlite3.conf
|
||||||
|
|
||||||
AST_EMB_MODULES:=\
|
AST_EMB_MODULES:=\
|
||||||
|
@ -138,7 +150,7 @@ $(call Package/asterisk13/install/sbin,$(1),safe_asterisk)
|
||||||
$(call Package/asterisk13/install/sbin,$(1),astgenkey)
|
$(call Package/asterisk13/install/sbin,$(1),astgenkey)
|
||||||
$(foreach m,$(AST_CFG_FILES),$(call Package/asterisk13/install/conffile,$(1),$(m));)
|
$(foreach m,$(AST_CFG_FILES),$(call Package/asterisk13/install/conffile,$(1),$(m));)
|
||||||
$(foreach m,$(AST_EMB_MODULES),$(call Package/asterisk13/install/module,$(1),$(m));)
|
$(foreach m,$(AST_EMB_MODULES),$(call Package/asterisk13/install/module,$(1),$(m));)
|
||||||
$(INSTALL_DIR) $(1)/usr/lib/asterisk/sounds/
|
$(INSTALL_DIR) $(1)/usr/share/asterisk/sounds/
|
||||||
$(INSTALL_DIR) $(1)/etc/default
|
$(INSTALL_DIR) $(1)/etc/default
|
||||||
$(INSTALL_DATA) ./files/asterisk.default $(1)/etc/default/asterisk
|
$(INSTALL_DATA) ./files/asterisk.default $(1)/etc/default/asterisk
|
||||||
$(INSTALL_DIR) $(1)/etc/init.d
|
$(INSTALL_DIR) $(1)/etc/init.d
|
||||||
|
@ -156,31 +168,42 @@ This package provides the sound-files for Asterisk-13.
|
||||||
endef
|
endef
|
||||||
|
|
||||||
define Package/asterisk13-sounds/install
|
define Package/asterisk13-sounds/install
|
||||||
$(INSTALL_DIR) $(1)/usr/lib/asterisk/sounds/
|
$(INSTALL_DIR) $(1)/usr/share/asterisk/sounds/
|
||||||
$(CP) $(PKG_INSTALL_DIR)/usr/lib/asterisk/sounds/en/* $(1)/usr/lib/asterisk/sounds/
|
$(CP) $(PKG_INSTALL_DIR)/usr/share/asterisk/sounds/en/* $(1)/usr/share/asterisk/sounds/
|
||||||
rm -f $(1)/usr/lib/asterisk/sounds/vm-*
|
rm -f $(1)/usr/share/asterisk/sounds/vm-*
|
||||||
rm -f $(1)/usr/lib/asterisk/sounds/conf-*
|
|
||||||
endef
|
endef
|
||||||
|
|
||||||
TARGET_LDFLAGS+= \
|
ifneq ($(CONFIG_PACKAGE_asterisk13-chan-dahdi),)
|
||||||
$(if $(CONFIG_PACKAGE_$(PKG_NAME)-pbx-lua),-ldl -lcrypt)
|
CONFIGURE_ARGS+= \
|
||||||
|
--with-dahdi="$(STAGING_DIR)/usr" \
|
||||||
|
--with-pri="$(STAGING_DIR)/usr" \
|
||||||
|
--with-tonezone="$(STAGING_DIR)/usr"
|
||||||
|
else
|
||||||
|
CONFIGURE_ARGS+= \
|
||||||
|
--without-dahdi \
|
||||||
|
--without-pri \
|
||||||
|
--without-tonezone
|
||||||
|
endif
|
||||||
|
|
||||||
EXTRA_CFLAGS+=$(TARGET_CPPFLAGS)
|
# Pass CPPFLAGS in the CFLAGS as otherwise the build system will
|
||||||
EXTRA_LDFLAGS+=$(TARGET_LDFLAGS) -Wl,-rpath-link,$(STAGING_DIR)/usr/lib
|
# ignore them.
|
||||||
|
TARGET_CFLAGS+=$(TARGET_CPPFLAGS)
|
||||||
|
|
||||||
CONFIGURE_ARGS+= \
|
CONFIGURE_ARGS+= \
|
||||||
|
--disable-xmldoc \
|
||||||
--without-execinfo \
|
--without-execinfo \
|
||||||
--without-bluetooth \
|
--without-bluetooth \
|
||||||
--without-cap \
|
--without-cap \
|
||||||
$(if $(CONFIG_PACKAGE_$(PKG_NAME)-curl),--with-libcurl="$(STAGING_DIR)/usr",--without-curl) \
|
$(if $(CONFIG_PACKAGE_$(PKG_NAME)-curl),--with-libcurl="$(STAGING_DIR)/usr",--without-curl) \
|
||||||
--without-curses \
|
--without-curses \
|
||||||
--without-dahdi \
|
|
||||||
--with-gsm=internal \
|
--with-gsm=internal \
|
||||||
--without-gtk2 \
|
--without-gtk2 \
|
||||||
--with-ilbc=internal \
|
--with-ilbc=internal \
|
||||||
--without-isdnnet \
|
--without-isdnnet \
|
||||||
--without-misdn \
|
--without-misdn \
|
||||||
--without-nbs \
|
--without-nbs \
|
||||||
|
--without-neon \
|
||||||
|
--without-neon29 \
|
||||||
--with-libxml2 \
|
--with-libxml2 \
|
||||||
--with-ncurses="$(STAGING_DIR)/usr" \
|
--with-ncurses="$(STAGING_DIR)/usr" \
|
||||||
--without-netsnmp \
|
--without-netsnmp \
|
||||||
|
@ -189,32 +212,56 @@ CONFIGURE_ARGS+= \
|
||||||
--without-osptk \
|
--without-osptk \
|
||||||
$(if $(CONFIG_PACKAGE_$(PKG_NAME)-pbx-lua),--with-lua="$(STAGING_DIR)/usr",--without-lua) \
|
$(if $(CONFIG_PACKAGE_$(PKG_NAME)-pbx-lua),--with-lua="$(STAGING_DIR)/usr",--without-lua) \
|
||||||
$(if $(CONFIG_PACKAGE_$(PKG_NAME)-pgsql),--with-postgres="$(STAGING_DIR)/usr",--without-postgres) \
|
$(if $(CONFIG_PACKAGE_$(PKG_NAME)-pgsql),--with-postgres="$(STAGING_DIR)/usr",--without-postgres) \
|
||||||
$(if $(CONFIG_PACKAGE_$(PKG_NAME)-pjsip),--with-pjproject,--without-pjproject) \
|
|
||||||
--with-popt="$(STAGING_DIR)/usr" \
|
--with-popt="$(STAGING_DIR)/usr" \
|
||||||
--without-pri \
|
|
||||||
--without-pwlib \
|
--without-pwlib \
|
||||||
--without-radius \
|
--without-radius \
|
||||||
$(if $(CONFIG_PACKAGE_$(PKG_NAME)-res-fax-spandsp),--with-spandsp="$(STAGING_DIR)/usr",--without-spandsp) \
|
$(if $(CONFIG_PACKAGE_$(PKG_NAME)-res-fax-spandsp),--with-spandsp="$(STAGING_DIR)/usr",--without-spandsp) \
|
||||||
--without-iksemel \
|
$(if $(CONFIG_PACKAGE_$(PKG_NAME)-res-xmpp),--with-iksemel="$(STAGING_DIR)/usr",--without-iksemel) \
|
||||||
--without-sdl \
|
--without-sdl \
|
||||||
--without-sqlite \
|
--without-sqlite \
|
||||||
--with-sqlite3="$(STAGING_DIR)/usr" \
|
--with-sqlite3="$(STAGING_DIR)/usr" \
|
||||||
$(if $(CONFIG_PACKAGE_$(PKG_NAME)-res-srtp),--with-srtp="$(STAGING_DIR)/usr",--without-srtp) \
|
|
||||||
--without-suppserv \
|
--without-suppserv \
|
||||||
--without-tds \
|
--without-tds \
|
||||||
--without-termcap \
|
--without-termcap \
|
||||||
--without-tinfo \
|
--without-tinfo \
|
||||||
--without-tonezone \
|
|
||||||
--with-uuid="$(STAGING_DIR)/usr" \
|
|
||||||
--without-vorbis \
|
--without-vorbis \
|
||||||
--without-vpb \
|
--without-vpb \
|
||||||
--with-z="$(STAGING_DIR)/usr" \
|
--with-z="$(STAGING_DIR)/usr" \
|
||||||
--with-sounds-cache="$(DL_DIR)" \
|
--with-sounds-cache="$(DL_DIR)"
|
||||||
--enable-xmldoc
|
|
||||||
|
ifeq ($(CONFIG_PACKAGE_$(PKG_NAME)-res-pjproject)$(CONFIG_PACKAGE_$(PKG_NAME)-res-srtp),)
|
||||||
|
CONFIGURE_ARGS+= \
|
||||||
|
--without-srtp
|
||||||
|
else
|
||||||
|
CONFIGURE_ARGS+= \
|
||||||
|
--with-srtp="$(STAGING_DIR)/usr"
|
||||||
|
endif
|
||||||
|
|
||||||
|
ifeq ($(CONFIG_PACKAGE_$(PKG_NAME)-pjsip)$(CONFIG_PACKAGE_$(PKG_NAME)-res-pjproject)$(CONFIG_PACKAGE_$(PKG_NAME)-res-rtp-asterisk),)
|
||||||
|
CONFIGURE_ARGS+= \
|
||||||
|
--without-pjproject
|
||||||
|
else
|
||||||
|
CONFIGURE_ARGS+= \
|
||||||
|
--with-pjproject="$(STAGING_DIR)/usr"
|
||||||
|
endif
|
||||||
|
|
||||||
CONFIGURE_VARS += \
|
CONFIGURE_VARS += \
|
||||||
ac_cv_path_ac_pt_CONFIG_LIBXML2=$(STAGING_DIR)/host/bin/xml2-config
|
ac_cv_path_ac_pt_CONFIG_LIBXML2=$(STAGING_DIR)/host/bin/xml2-config
|
||||||
|
|
||||||
|
MAKE_FLAGS+= \
|
||||||
|
ASTDATADIR="/usr/share/asterisk" \
|
||||||
|
DESTDIR="$(PKG_INSTALL_DIR)"
|
||||||
|
|
||||||
|
# show full gcc arguments instead of [CC] and [LD]
|
||||||
|
MAKE_FLAGS+= \
|
||||||
|
NOISY_BUILD="yes"
|
||||||
|
|
||||||
|
# don't let asterisk mess with build flags
|
||||||
|
MAKE_FLAGS+= \
|
||||||
|
AST_FORTIFY_SOURCE="" \
|
||||||
|
DEBUG="" \
|
||||||
|
OPTIMIZE=""
|
||||||
|
|
||||||
AST_MENUSELECT_OPTS = \
|
AST_MENUSELECT_OPTS = \
|
||||||
--without-newt \
|
--without-newt \
|
||||||
--without-curses \
|
--without-curses \
|
||||||
|
@ -225,7 +272,7 @@ define Build/Configure
|
||||||
(cd $(PKG_BUILD_DIR); \
|
(cd $(PKG_BUILD_DIR); \
|
||||||
./bootstrap.sh; \
|
./bootstrap.sh; \
|
||||||
);
|
);
|
||||||
$(call Build/Configure/Default,,$(SITE_VARS))
|
$(call Build/Configure/Default)
|
||||||
(cd $(PKG_BUILD_DIR)/menuselect; \
|
(cd $(PKG_BUILD_DIR)/menuselect; \
|
||||||
./bootstrap.sh; \
|
./bootstrap.sh; \
|
||||||
./configure \
|
./configure \
|
||||||
|
@ -240,22 +287,20 @@ define Build/Compile
|
||||||
$(MAKE) -C "$(PKG_BUILD_DIR)/menuselect" \
|
$(MAKE) -C "$(PKG_BUILD_DIR)/menuselect" \
|
||||||
CFLAGS="$(HOST_CFLAGS) -I$(STAGING_DIR_HOST)/include/libxml2" \
|
CFLAGS="$(HOST_CFLAGS) -I$(STAGING_DIR_HOST)/include/libxml2" \
|
||||||
LDFLAGS="$(HOST_LDFLAGS) -lxml2"
|
LDFLAGS="$(HOST_LDFLAGS) -lxml2"
|
||||||
$(MAKE) -C "$(PKG_BUILD_DIR)" \
|
$(MAKE) -C "$(PKG_BUILD_DIR)" menuselect-tree
|
||||||
include/asterisk/version.h \
|
cd "$(PKG_BUILD_DIR)" && \
|
||||||
include/asterisk/buildopts.h defaults.h \
|
./menuselect/menuselect \
|
||||||
makeopts.embed_rules
|
--disable BUILD_NATIVE \
|
||||||
ASTCFLAGS="$(EXTRA_CFLAGS) -DLOW_MEMORY"
|
$(if $(CONFIG_ASTERISK13_LOW_MEMORY),--enable LOW_MEMORY) \
|
||||||
ASTLDFLAGS="$(EXTRA_LDFLAGS)"
|
menuselect.makeopts
|
||||||
$(MAKE) -C "$(PKG_BUILD_DIR)" \
|
# Hack:
|
||||||
ASTVARLIBDIR="/usr/lib/asterisk" \
|
# When changing anything in MENUSELECT_CFLAGS the file ".lastclean"
|
||||||
ASTDATADIR="/usr/lib/asterisk" \
|
# gets deleted. E.g. when compiling on x86 for x86 "--disable
|
||||||
ASTKEYDIR="/usr/lib/asterisk" \
|
# BUILD_NATIVE" changes MENUSELECT_CFLAGS and the file gets removed.
|
||||||
ASTDBDIR="/usr/lib/asterisk" \
|
# But that will result in a rebuild attempt of menuselect which will
|
||||||
NOISY_BUILD="yes" \
|
# likely fail. Prevent that by recreating ".lastclean".
|
||||||
DEBUG="" \
|
$(CP) "$(PKG_BUILD_DIR)/.cleancount" "$(PKG_BUILD_DIR)/.lastclean"
|
||||||
OPTIMIZE="" \
|
$(call Build/Compile/Default,all install samples)
|
||||||
DESTDIR="$(PKG_INSTALL_DIR)" \
|
|
||||||
all install samples
|
|
||||||
endef
|
endef
|
||||||
|
|
||||||
define Build/InstallDev
|
define Build/InstallDev
|
||||||
|
@ -283,16 +328,18 @@ $(eval $(call BuildPackage,asterisk13-sounds))
|
||||||
|
|
||||||
$(eval $(call BuildAsterisk13Module,app-alarmreceiver,Alarm receiver,Central Station Alarm receiver for Ademco Contact ID,,,app_alarmreceiver,,))
|
$(eval $(call BuildAsterisk13Module,app-alarmreceiver,Alarm receiver,Central Station Alarm receiver for Ademco Contact ID,,,app_alarmreceiver,,))
|
||||||
$(eval $(call BuildAsterisk13Module,app-authenticate,Authenticate commands,Execute arbitrary authenticate commands,,,app_authenticate,,))
|
$(eval $(call BuildAsterisk13Module,app-authenticate,Authenticate commands,Execute arbitrary authenticate commands,,,app_authenticate,,))
|
||||||
|
$(eval $(call BuildAsterisk13Module,app-chanisavail,Channel availability check,support for checking if a channel is available,,,app_chanisavail,,))
|
||||||
|
$(eval $(call BuildAsterisk13Module,app-chanspy,Channel listen in,support for listening in on any channel,,,app_chanspy,,))
|
||||||
|
$(eval $(call BuildAsterisk13Module,app-confbridge,ConfBridge,Software bridge for multi-party audio conferencing,+asterisk13-bridge-builtin-features +asterisk13-bridge-simple +asterisk13-bridge-softmix,confbridge.conf,app_confbridge,,))
|
||||||
|
$(eval $(call BuildAsterisk13Module,app-dahdiras,Execute an ISDN RAS,support for executing an ISDN RAS using DAHDI,+asterisk13-chan-dahdi,,app_dahdiras,,))
|
||||||
$(eval $(call BuildAsterisk13Module,app-directed_pickup,Directed call pickup,support for directed call pickup,,,app_directed_pickup,,))
|
$(eval $(call BuildAsterisk13Module,app-directed_pickup,Directed call pickup,support for directed call pickup,,,app_directed_pickup,,))
|
||||||
$(eval $(call BuildAsterisk13Module,app-disa,Direct Inward System Access,Direct Inward System Access,,,app_disa,,))
|
$(eval $(call BuildAsterisk13Module,app-disa,Direct Inward System Access,Direct Inward System Access,,,app_disa,,))
|
||||||
$(eval $(call BuildAsterisk13Module,app-exec,Exec application,support for application execution,,,app_exec,,))
|
$(eval $(call BuildAsterisk13Module,app-exec,Exec application,support for application execution,,,app_exec,,))
|
||||||
$(eval $(call BuildAsterisk13Module,app-chanisavail,Channel availability check,support for checking if a channel is available,,,app_chanisavail,,))
|
|
||||||
$(eval $(call BuildAsterisk13Module,app-chanspy,Channel listen in,support for listening in on any channel,,,app_chanspy,,))
|
|
||||||
$(eval $(call BuildAsterisk13Module,app-confbridge,ConfBridge,Software bridge for multi-party audio conferencing,,confbridge.conf,app_confbridge bridge_builtin_features bridge_multiplexed bridge_simple bridge_softmix,,))
|
|
||||||
$(eval $(call BuildAsterisk13Module,app-minivm,Minimal voicemail system,a voicemail system in small building blocks working together based on the Comedian Mail voicemail,,extensions_minivm.conf minivm.conf,app_minivm,,))
|
$(eval $(call BuildAsterisk13Module,app-minivm,Minimal voicemail system,a voicemail system in small building blocks working together based on the Comedian Mail voicemail,,extensions_minivm.conf minivm.conf,app_minivm,,))
|
||||||
$(eval $(call BuildAsterisk13Module,app-mixmonitor,Record a call and mix the audio,record a call and mix the audio during the recording,,,app_mixmonitor,,))
|
$(eval $(call BuildAsterisk13Module,app-mixmonitor,Record a call and mix the audio,record a call and mix the audio during the recording,,,app_mixmonitor,,))
|
||||||
$(eval $(call BuildAsterisk13Module,app-originate,Originate a call,originating an outbound call and connecting it to a specified extension or application,,,app_originate,,))
|
$(eval $(call BuildAsterisk13Module,app-originate,Originate a call,originating an outbound call and connecting it to a specified extension or application,,,app_originate,,))
|
||||||
$(eval $(call BuildAsterisk13Module,app-playtones,Playtones application,play a tone list,,,app_playtones,,))
|
$(eval $(call BuildAsterisk13Module,app-playtones,Playtones application,play a tone list,,,app_playtones,,))
|
||||||
|
$(eval $(call BuildAsterisk13Module,app-queue,True Call Queueing,support for ACD,,queues.conf queuerules.conf,app_queue,))
|
||||||
$(eval $(call BuildAsterisk13Module,app-read,Variable read,a trivial application to read a variable,,,app_read,,))
|
$(eval $(call BuildAsterisk13Module,app-read,Variable read,a trivial application to read a variable,,,app_read,,))
|
||||||
$(eval $(call BuildAsterisk13Module,app-readexten,Extension to variable,a trivial application to read an extension into a variable,,,app_readexten,,))
|
$(eval $(call BuildAsterisk13Module,app-readexten,Extension to variable,a trivial application to read an extension into a variable,,,app_readexten,,))
|
||||||
$(eval $(call BuildAsterisk13Module,app-record,Record sound file,to record a sound file,,,app_record,,))
|
$(eval $(call BuildAsterisk13Module,app-record,Record sound file,to record a sound file,,,app_record,,))
|
||||||
|
@ -305,12 +352,24 @@ $(eval $(call BuildAsterisk13Module,app-talkdetect,File playback with audio dete
|
||||||
$(eval $(call BuildAsterisk13Module,app-verbose,Verbose logging,Verbose logging application,,,app_verbose,,))
|
$(eval $(call BuildAsterisk13Module,app-verbose,Verbose logging,Verbose logging application,,,app_verbose,,))
|
||||||
$(eval $(call BuildAsterisk13Module,app-waituntil,Sleep,support sleeping until the given epoch,,,app_waituntil,,))
|
$(eval $(call BuildAsterisk13Module,app-waituntil,Sleep,support sleeping until the given epoch,,,app_waituntil,,))
|
||||||
$(eval $(call BuildAsterisk13Module,app-while,While loop,a while loop implementation,,,app_while,,))
|
$(eval $(call BuildAsterisk13Module,app-while,While loop,a while loop implementation,,,app_while,,))
|
||||||
|
$(eval $(call BuildAsterisk13Module,bridge-builtin-features,Bridging features,built in bridging features,,,bridge_builtin_features))
|
||||||
|
$(eval $(call BuildAsterisk13Module,bridge-builtin-interval-features,Built in bridging interval features,built in bridging interval features,,,bridge_builtin_interval_features))
|
||||||
|
$(eval $(call BuildAsterisk13Module,bridge-holding,Bridging for storing channels in a bridge,bridging technology for storing channels in a bridge,,,bridge_holding))
|
||||||
|
$(eval $(call BuildAsterisk13Module,bridge-native-rtp,Native RTP bridging technology module,native RTP bridging technology module,,,bridge_native_rtp))
|
||||||
|
$(eval $(call BuildAsterisk13Module,bridge-simple,Simple two channel bridging module,simple two channel bridging module,,,bridge_simple))
|
||||||
|
$(eval $(call BuildAsterisk13Module,bridge-softmix,Multi-party software based channel mixing,multi-party software based channel mixing,,,bridge_softmix))
|
||||||
|
$(eval $(call BuildAsterisk13Module,cdr,Provides CDR,Call Detail Record,,cdr.conf cdr_custom.conf cdr_manager.conf cdr_syslog.conf,app_cdr app_forkcdr cdr_custom cdr_manager cdr_syslog func_cdr,,))
|
||||||
$(eval $(call BuildAsterisk13Module,cdr-csv,Provides CDR CSV,Call Detail Record with CSV support,,,cdr_csv,,))
|
$(eval $(call BuildAsterisk13Module,cdr-csv,Provides CDR CSV,Call Detail Record with CSV support,,,cdr_csv,,))
|
||||||
$(eval $(call BuildAsterisk13Module,cdr-sqlite3,Provides CDR SQLITE3,Call Detail Record with SQLITE3 support,libsqlite3,,cdr_sqlite3_custom,,))
|
$(eval $(call BuildAsterisk13Module,cdr-sqlite3,Provides CDR SQLITE3,Call Detail Record with SQLITE3 support,libsqlite3,,cdr_sqlite3_custom,,))
|
||||||
$(eval $(call BuildAsterisk13Module,cdr,Provides CDR,Call Detail Record,,cdr.conf cdr_custom.conf cdr_manager.conf cdr_syslog.conf,app_cdr app_forkcdr cdr_custom cdr_manager cdr_syslog func_cdr,,))
|
$(eval $(call BuildAsterisk13Module,chan-dahdi,DAHDI channel,DAHDI channel support,+dahdi-tools-libtonezone +kmod-dahdi +libpri,chan_dahdi.conf,chan_dahdi,,))
|
||||||
|
$(eval $(call BuildAsterisk13Module,chan-iax2,IAX2 channel,IAX support,+asterisk13-res-timing-timerfd,iax.conf iaxprov.conf,chan_iax2,,))
|
||||||
|
$(eval $(call BuildAsterisk13Module,chan-sip,SIP channel,the channel chan_sip,+asterisk13-app-confbridge,sip.conf sip_notify.conf,chan_sip,,))
|
||||||
|
$(eval $(call BuildAsterisk13Module,chan-skinny,Skinny channel,the channel chan_skinny,,skinny.conf,chan_skinny,,))
|
||||||
|
$(eval $(call BuildAsterisk13Module,chan-unistim,Unistim channel,channel driver for the UNISTIM (Unified Networks IP Stimulus) protocol,,unistim.conf,chan_unistim,,))
|
||||||
$(eval $(call BuildAsterisk13Module,codec-a-mu,Alaw to ulaw translation,translation between alaw and ulaw codecs,,,codec_a_mu,,))
|
$(eval $(call BuildAsterisk13Module,codec-a-mu,Alaw to ulaw translation,translation between alaw and ulaw codecs,,,codec_a_mu,,))
|
||||||
$(eval $(call BuildAsterisk13Module,codec-adpcm,ADPCM text,ADPCM text ,,,codec_adpcm,,))
|
$(eval $(call BuildAsterisk13Module,codec-adpcm,ADPCM text,ADPCM text ,,,codec_adpcm,,))
|
||||||
$(eval $(call BuildAsterisk13Module,codec-alaw,Signed linear to alaw translation,translation between signed linear and alaw codecs,,,codec_alaw,,))
|
$(eval $(call BuildAsterisk13Module,codec-alaw,Signed linear to alaw translation,translation between signed linear and alaw codecs,,,codec_alaw,,))
|
||||||
|
$(eval $(call BuildAsterisk13Module,codec-dahdi,DAHDI codec,DAHDI native transcoding support,+asterisk13-chan-dahdi,,codec_dahdi,,))
|
||||||
$(eval $(call BuildAsterisk13Module,codec-g722,G.722,a high bit rate 48/56/64Kbps ITU standard codec,,,codec_g722,,))
|
$(eval $(call BuildAsterisk13Module,codec-g722,G.722,a high bit rate 48/56/64Kbps ITU standard codec,,,codec_g722,,))
|
||||||
$(eval $(call BuildAsterisk13Module,codec-g726,Signed linear to G.726 translation,translation between signed linear and ITU G.726-32kbps codecs,,,codec_g726,,))
|
$(eval $(call BuildAsterisk13Module,codec-g726,Signed linear to G.726 translation,translation between signed linear and ITU G.726-32kbps codecs,,,codec_g726,,))
|
||||||
$(eval $(call BuildAsterisk13Module,codec-gsm,linear to GSM translation,translate between signed linear and GSM,,,codec_gsm,,))
|
$(eval $(call BuildAsterisk13Module,codec-gsm,linear to GSM translation,translate between signed linear and GSM,,,codec_gsm,,))
|
||||||
|
@ -318,7 +377,7 @@ $(eval $(call BuildAsterisk13Module,codec-ilbc,linear to ILBC translation,transl
|
||||||
$(eval $(call BuildAsterisk13Module,codec-lpc10,Linear to LPC10 translation,translate between signed linear and LPC10,,,codec_lpc10,,))
|
$(eval $(call BuildAsterisk13Module,codec-lpc10,Linear to LPC10 translation,translate between signed linear and LPC10,,,codec_lpc10,,))
|
||||||
$(eval $(call BuildAsterisk13Module,codec-resample,resample sLinear audio,resample sLinear audio,,,codec_resample,,))
|
$(eval $(call BuildAsterisk13Module,codec-resample,resample sLinear audio,resample sLinear audio,,,codec_resample,,))
|
||||||
$(eval $(call BuildAsterisk13Module,codec-ulaw,Signed linear to ulaw translation,translation between signed linear and ulaw codecs,,,codec_ulaw,,))
|
$(eval $(call BuildAsterisk13Module,codec-ulaw,Signed linear to ulaw translation,translation between signed linear and ulaw codecs,,,codec_ulaw,,))
|
||||||
$(eval $(call BuildAsterisk13Module,curl,CURL,CURL support,+libcurl,,func_curl res_curl,,))
|
$(eval $(call BuildAsterisk13Module,curl,CURL,CURL support,+libcurl,,func_curl res_config_curl res_curl,,))
|
||||||
$(eval $(call BuildAsterisk13Module,format-g726,G.726,support for headerless G.726 16/24/32/40kbps data format,,,format_g726,,))
|
$(eval $(call BuildAsterisk13Module,format-g726,G.726,support for headerless G.726 16/24/32/40kbps data format,,,format_g726,,))
|
||||||
$(eval $(call BuildAsterisk13Module,format-g729,G.729,support for raw headerless G729 data,,,format_g729,,))
|
$(eval $(call BuildAsterisk13Module,format-g729,G.729,support for raw headerless G729 data,,,format_g729,,))
|
||||||
$(eval $(call BuildAsterisk13Module,format-gsm,GSM format,support for GSM format,,,format_gsm,,))
|
$(eval $(call BuildAsterisk13Module,format-gsm,GSM format,support for GSM format,,,format_gsm,,))
|
||||||
|
@ -328,10 +387,11 @@ $(eval $(call BuildAsterisk13Module,format-ilbc,ILBC format,support for ILBC for
|
||||||
$(eval $(call BuildAsterisk13Module,format-pcm,PCM format,support for PCM format,,,format_pcm,,))
|
$(eval $(call BuildAsterisk13Module,format-pcm,PCM format,support for PCM format,,,format_pcm,,))
|
||||||
$(eval $(call BuildAsterisk13Module,format-sln,Raw slinear format,support for raw slinear format,,,format_sln,,))
|
$(eval $(call BuildAsterisk13Module,format-sln,Raw slinear format,support for raw slinear format,,,format_sln,,))
|
||||||
$(eval $(call BuildAsterisk13Module,format-vox,VOX format,support for ADPCM vox format,,,format_vox,,))
|
$(eval $(call BuildAsterisk13Module,format-vox,VOX format,support for ADPCM vox format,,,format_vox,,))
|
||||||
$(eval $(call BuildAsterisk13Module,format-wav-gsm,WAV format (Proprietary GSM),support for proprietary Microsoft WAV format (Proprietary GSM),,,format_wav_gsm,,))
|
|
||||||
$(eval $(call BuildAsterisk13Module,format-wav,WAV format (8000hz Signed Linear),support for proprietary Microsoft WAV format (8000hz Signed Linear),,,format_wav,,))
|
$(eval $(call BuildAsterisk13Module,format-wav,WAV format (8000hz Signed Linear),support for proprietary Microsoft WAV format (8000hz Signed Linear),,,format_wav,,))
|
||||||
|
$(eval $(call BuildAsterisk13Module,format-wav-gsm,WAV format (Proprietary GSM),support for proprietary Microsoft WAV format (Proprietary GSM),,,format_wav_gsm,,))
|
||||||
$(eval $(call BuildAsterisk13Module,func-base64,base64 support,support of base64 function,,,func_base64,,))
|
$(eval $(call BuildAsterisk13Module,func-base64,base64 support,support of base64 function,,,func_base64,,))
|
||||||
$(eval $(call BuildAsterisk13Module,func-blacklist,Blacklist on callerid,looking up the callerid number and see if it is blacklisted,,,func_blacklist,,))
|
$(eval $(call BuildAsterisk13Module,func-blacklist,Blacklist on callerid,looking up the callerid number and see if it is blacklisted,,,func_blacklist,,))
|
||||||
|
$(eval $(call BuildAsterisk13Module,func-channel,Channel info,Channel info dialplan function,,,func_channel,,))
|
||||||
$(eval $(call BuildAsterisk13Module,func-cut,CUT function,CUT function,,,func_cut,,))
|
$(eval $(call BuildAsterisk13Module,func-cut,CUT function,CUT function,,,func_cut,,))
|
||||||
$(eval $(call BuildAsterisk13Module,func-db,Database interaction,functions for interaction with the database,,,func_db app_db,))
|
$(eval $(call BuildAsterisk13Module,func-db,Database interaction,functions for interaction with the database,,,func_db app_db,))
|
||||||
$(eval $(call BuildAsterisk13Module,func-devstate,Blinky lights control,functions for manually controlled blinky lights,,,func_devstate,,))
|
$(eval $(call BuildAsterisk13Module,func-devstate,Blinky lights control,functions for manually controlled blinky lights,,,func_devstate,,))
|
||||||
|
@ -340,34 +400,45 @@ $(eval $(call BuildAsterisk13Module,func-env,Environment functions,Environment d
|
||||||
$(eval $(call BuildAsterisk13Module,func-extstate,Hinted extension state,retrieving the state of a hinted extension for dialplan control,,,func_extstate,,))
|
$(eval $(call BuildAsterisk13Module,func-extstate,Hinted extension state,retrieving the state of a hinted extension for dialplan control,,,func_extstate,,))
|
||||||
$(eval $(call BuildAsterisk13Module,func-global,Global variable,global variable dialplan functions,,,func_global,,))
|
$(eval $(call BuildAsterisk13Module,func-global,Global variable,global variable dialplan functions,,,func_global,,))
|
||||||
$(eval $(call BuildAsterisk13Module,func-groupcount,Group count,for counting number of channels in the specified group,,,func_groupcount,,))
|
$(eval $(call BuildAsterisk13Module,func-groupcount,Group count,for counting number of channels in the specified group,,,func_groupcount,,))
|
||||||
$(eval $(call BuildAsterisk13Module,func-channel,Channel info,Channel info dialplan function,,,func_channel,,))
|
|
||||||
$(eval $(call BuildAsterisk13Module,func-math,Math functions,Math functions,,,func_math,))
|
$(eval $(call BuildAsterisk13Module,func-math,Math functions,Math functions,,,func_math,))
|
||||||
$(eval $(call BuildAsterisk13Module,func-module,Simple module check function,Simple module check function,,,func_module,))
|
$(eval $(call BuildAsterisk13Module,func-module,Simple module check function,Simple module check function,,,func_module,))
|
||||||
|
$(eval $(call BuildAsterisk13Module,func-periodic-hook,Periodic dialplan hooks,Execute a periodic dialplan hook into the audio of a call,+$(PKG_NAME)-app-chanspy +$(PKG_NAME)-func-cut +$(PKG_NAME)-func-groupcount +$(PKG_NAME)-func-uri,,func_periodic_hook,,))
|
||||||
|
$(eval $(call BuildAsterisk13Module,func-realtime,realtime,the realtime dialplan function,,,func_realtime,,))
|
||||||
$(eval $(call BuildAsterisk13Module,func-shell,Shell,support for shell execution,,,func_shell,,))
|
$(eval $(call BuildAsterisk13Module,func-shell,Shell,support for shell execution,,,func_shell,,))
|
||||||
$(eval $(call BuildAsterisk13Module,func-uri,URI encoding and decoding,Encodes and decodes URI-safe strings,,,func_uri,,))
|
$(eval $(call BuildAsterisk13Module,func-uri,URI encoding and decoding,Encodes and decodes URI-safe strings,,,func_uri,,))
|
||||||
$(eval $(call BuildAsterisk13Module,func-vmcount,vmcount dialplan,a vmcount dialplan function,,,func_vmcount,,))
|
$(eval $(call BuildAsterisk13Module,func-vmcount,vmcount dialplan,a vmcount dialplan function,,,func_vmcount,,))
|
||||||
$(eval $(call BuildAsterisk13Module,chan-iax2,IAX2 channel,IAX support,+asterisk13-res-timing-timerfd,iax.conf iaxprov.conf,chan_iax2,,))
|
$(eval $(call BuildAsterisk13Module,odbc,ODBC,ODBC support,+libpthread +libc +unixodbc,cdr_adaptive_odbc.conf cdr_odbc.conf cel_odbc.conf func_odbc.conf res_odbc.conf,cdr_adaptive_odbc cdr_odbc cel_odbc func_odbc res_config_odbc res_odbc res_odbc_transaction,,))
|
||||||
$(eval $(call BuildAsterisk13Module,chan-sip,SIP channel,the channel chan_sip,+asterisk13-app-confbridge,sip.conf sip_notify.conf,chan_sip,,))
|
$(eval $(call BuildAsterisk13Module,pbx-ael,Asterisk Extension Logic,support for symbolic Asterisk Extension Logic,+$(PKG_NAME)-res-ael-share,extensions.ael,pbx_ael,,))
|
||||||
$(eval $(call BuildAsterisk13Module,chan-skinny,Skinny channel,the channel chan_skinny,,skinny.conf,chan_skinny,,))
|
|
||||||
$(eval $(call BuildAsterisk13Module,chan-unistim,Unistim channel,channel driver for the UNISTIM (Unified Networks IP Stimulus) protocol,,unistim.conf,chan_unistim,,))
|
|
||||||
$(eval $(call BuildAsterisk13Module,odbc,ODBC,ODBC support,+libpthread +libc +unixodbc,cdr_adaptive_odbc.conf cdr_odbc.conf cel_odbc.conf func_odbc.conf res_odbc.conf,cdr_adaptive_odbc cdr_odbc cel_odbc func_odbc res_config_odbc res_odbc,,))
|
|
||||||
$(eval $(call BuildAsterisk13Module,pbx-ael,Asterisk Extension Logic,support for symbolic Asterisk Extension Logic,,extensions.ael,pbx_ael,,))
|
|
||||||
$(eval $(call BuildAsterisk13Module,pbx-dundi,Dundi,provides Dundi Lookup service for Asterisk,,dundi.conf,pbx_dundi,,))
|
$(eval $(call BuildAsterisk13Module,pbx-dundi,Dundi,provides Dundi Lookup service for Asterisk,,dundi.conf,pbx_dundi,,))
|
||||||
|
$(eval $(call BuildAsterisk13Module,pbx-realtime,Realtime Switch,realtime switch support,,,pbx_realtime,,))
|
||||||
$(eval $(call BuildAsterisk13Module,pbx-spool,Call Spool,outgoing call spool support,,,pbx_spool,,))
|
$(eval $(call BuildAsterisk13Module,pbx-spool,Call Spool,outgoing call spool support,,,pbx_spool,,))
|
||||||
$(eval $(call BuildAsterisk13Module,pgsql,PostgreSQL,PostgreSQL support,+libpq,cel_pgsql.conf cdr_pgsql.conf res_pgsql.conf,cel_pgsql cdr_pgsql res_config_pgsql,,))
|
$(eval $(call BuildAsterisk13Module,pgsql,PostgreSQL,PostgreSQL support,+libpq,cel_pgsql.conf cdr_pgsql.conf res_pgsql.conf,cel_pgsql cdr_pgsql res_config_pgsql,,))
|
||||||
$(eval $(call BuildAsterisk13Module,pjsip,pjsip channel,the channel pjsip,+asterisk13-res-sorcery +libpjsip +libpjmedia +libpjnath +libpjsip-simple +libpjsip-ua +libpjsua +libpjsua2,pjsip.conf pjsip_notify.conf,func_pjsip_endpoint chan_pjsip res_pjsip_acl res_pjsip_authenticator_digest res_pjsip_caller_id res_pjsip_dialog_info_body_generator res_pjsip_diversion res_pjsip_dtmf_info res_pjsip_endpoint_identifier_anonymous res_pjsip_endpoint_identifier_ip res_pjsip_endpoint_identifier_user res_pjsip_exten_state res_pjsip_header_funcs res_pjsip_log_forwarder res_pjsip_logger res_pjsip_messaging res_pjsip_multihomed res_pjsip_mwi_body_generator res_pjsip_mwi res_pjsip_nat res_pjsip_notify res_pjsip_one_touch_record_info res_pjsip_outbound_authenticator_digest res_pjsip_outbound_publish res_pjsip_outbound_registration res_pjsip_path res_pjsip_pidf_body_generator res_pjsip_pidf_digium_body_supplement res_pjsip_pidf_eyebeam_body_supplement res_pjsip_publish_asterisk res_pjsip_pubsub res_pjsip_refer res_pjsip_registrar_expire res_pjsip_registrar res_pjsip_rfc3326 res_pjsip_sdp_rtp res_pjsip_send_to_voicemail res_pjsip_session res_pjsip res_pjsip_transport_websocket res_pjsip_t38 res_pjsip_xpidf_body_generator,,))
|
$(eval $(call BuildAsterisk13Module,pjsip,pjsip channel,the channel pjsip,+asterisk13-res-sorcery +asterisk13-res-pjproject +libpjsip +libpjmedia +libpjnath +libpjsip-simple +libpjsip-ua +libpjsua +libpjsua2,pjsip.conf pjsip_notify.conf pjsip_wizard.conf,chan_pjsip func_pjsip_aor func_pjsip_contact func_pjsip_endpoint res_pjsip res_pjsip_acl res_pjsip_authenticator_digest res_pjsip_caller_id res_pjsip_config_wizard res_pjsip_dialog_info_body_generator res_pjsip_diversion res_pjsip_dlg_options res_pjsip_dtmf_info res_pjsip_empty_info res_pjsip_endpoint_identifier_anonymous res_pjsip_endpoint_identifier_ip res_pjsip_endpoint_identifier_user res_pjsip_exten_state res_pjsip_header_funcs res_pjsip_history res_pjsip_logger res_pjsip_messaging res_pjsip_mwi res_pjsip_mwi_body_generator res_pjsip_nat res_pjsip_notify res_pjsip_one_touch_record_info res_pjsip_outbound_authenticator_digest res_pjsip_outbound_publish res_pjsip_outbound_registration res_pjsip_path res_pjsip_pidf_body_generator res_pjsip_pidf_digium_body_supplement res_pjsip_pidf_eyebeam_body_supplement res_pjsip_publish_asterisk res_pjsip_pubsub res_pjsip_refer res_pjsip_registrar res_pjsip_registrar_expire res_pjsip_rfc3326 res_pjsip_sdp_rtp res_pjsip_send_to_voicemail res_pjsip_session res_pjsip_sips_contact res_pjsip_t38 res_pjsip_transport_websocket res_pjsip_xpidf_body_generator,,))
|
||||||
|
$(eval $(call BuildAsterisk13Module,res-adsi,Provide ADSI,Analog Display Services Interface capability,,,res_adsi,,))
|
||||||
$(eval $(call BuildAsterisk13Module,res-ael-share,Shareable AEL code,support for shareable AEL code mainly between internal and external modules,,,res_ael_share,,))
|
$(eval $(call BuildAsterisk13Module,res-ael-share,Shareable AEL code,support for shareable AEL code mainly between internal and external modules,,,res_ael_share,,))
|
||||||
$(eval $(call BuildAsterisk13Module,res-agi,Asterisk Gateway Interface,Support for the Asterisk Gateway Interface extension,,,res_agi,,))
|
$(eval $(call BuildAsterisk13Module,res-agi,Asterisk Gateway Interface,Support for the Asterisk Gateway Interface extension,+asterisk13-res-speech,,res_agi,,))
|
||||||
|
$(eval $(call BuildAsterisk13Module,res-calendar,Calendaring API,Calendaring support (ICal and Google Calendar),,calendar.conf,res_calendar,,))
|
||||||
$(eval $(call BuildAsterisk13Module,res-clioriginate,Calls via CLI,Originate calls via the CLI,,,res_clioriginate,,))
|
$(eval $(call BuildAsterisk13Module,res-clioriginate,Calls via CLI,Originate calls via the CLI,,,res_clioriginate,,))
|
||||||
$(eval $(call BuildAsterisk13Module,res-fax,FAX modules,Generic FAX resource for FAX technology resource modules,+asterisk13-res-timing-pthread,udptl.conf res_fax.conf,res_fax,,))
|
$(eval $(call BuildAsterisk13Module,res-fax,FAX modules,Generic FAX resource for FAX technology resource modules,+asterisk13-res-timing-pthread,res_fax.conf,res_fax,,))
|
||||||
$(eval $(call BuildAsterisk13Module,res-http-websocket,HTTP websocket support,,,,res_http_websocket,,))
|
$(eval $(call BuildAsterisk13Module,res-fax-spandsp,Spandsp T.38 and G.711,Spandsp T.38 and G.711 FAX Resource,+asterisk13-res-fax +libspandsp +libtiff,,res_fax_spandsp,,))
|
||||||
$(eval $(call BuildAsterisk13Module,res-monitor,Provide Monitor,Cryptographic Signature capability,,,res_monitor,,))
|
$(eval $(call BuildAsterisk13Module,res-hep,HEPv3 API,Routines for integration with Homer using HEPv3,,hep.conf,res_hep,,))
|
||||||
|
$(eval $(call BuildAsterisk13Module,res-hep-pjsip,PJSIP HEPv3 Logger,PJSIP logging with Homer,+asterisk13-res-hep +asterisk13-pjsip,,res_hep_pjsip,,))
|
||||||
|
$(eval $(call BuildAsterisk13Module,res-hep-rtcp,RTCP HEPv3 Logger,RTCP logging with Homer,+asterisk13-res-hep,,res_hep_rtcp,,))
|
||||||
|
$(eval $(call BuildAsterisk13Module,res-http-websocket,HTTP websocket support,WebSocket support for the Asterisk internal HTTP server,,,res_http_websocket,,))
|
||||||
|
$(eval $(call BuildAsterisk13Module,res-monitor,PBX channel monitoring,call monitoring resource,+$(PKG_NAME)-func-periodic-hook,,res_monitor,,))
|
||||||
$(eval $(call BuildAsterisk13Module,res-musiconhold,MOH,Music On Hold support,,musiconhold.conf,res_musiconhold,,))
|
$(eval $(call BuildAsterisk13Module,res-musiconhold,MOH,Music On Hold support,,musiconhold.conf,res_musiconhold,,))
|
||||||
|
$(eval $(call BuildAsterisk13Module,res-parking,Phone Parking,Phone Parking application,+$(PKG_NAME)-bridge-holding,res_parking.conf,res_parking,,))
|
||||||
$(eval $(call BuildAsterisk13Module,res-phoneprov,Phone Provisioning,Phone provisioning application for the asterisk internal http server,,phoneprov.conf,res_phoneprov,,))
|
$(eval $(call BuildAsterisk13Module,res-phoneprov,Phone Provisioning,Phone provisioning application for the asterisk internal http server,,phoneprov.conf,res_phoneprov,,))
|
||||||
$(eval $(call BuildAsterisk13Module,res-rtp-asterisk,RTP stack,,+libpjsip +libpjmedia +libpjnath +libpjsip-simple +libpjsip-ua +libpjsua +libpjsua2,rtp.conf,res_rtp_asterisk,,))
|
$(eval $(call BuildAsterisk13Module,res-pjproject,Bridge PJPROJECT to Asterisk logging,,+libpj +libpjlib-util +libpjmedia +libpjmedia +libpjnath +libpjsip-simple +libpjsip-ua +libpjsip +libpjsua +libpjsua2 +libsrtp,pjproject.conf,res_pjproject,,))
|
||||||
$(eval $(call BuildAsterisk13Module,res-rtp-multicast,RTP multicast engine,,,,res_rtp_multicast,,))
|
$(eval $(call BuildAsterisk13Module,res-realtime,Realtime,Realtime Interface,,,res_realtime,,))
|
||||||
|
$(eval $(call BuildAsterisk13Module,res-rtp-asterisk,RTP stack,Supports RTP and RTCP with Symmetric RTP support for NAT traversal,+libpjsip +libpjmedia +libpjnath +libpjsip-simple +libpjsip-ua +libpjsua +libpjsua2,rtp.conf,res_rtp_asterisk,,))
|
||||||
|
$(eval $(call BuildAsterisk13Module,res-rtp-multicast,RTP multicast engine,Multicast RTP Engine,,,res_rtp_multicast,,))
|
||||||
$(eval $(call BuildAsterisk13Module,res-smdi,Provide SMDI,Simple Message Desk Interface capability,,smdi.conf,res_smdi,,))
|
$(eval $(call BuildAsterisk13Module,res-smdi,Provide SMDI,Simple Message Desk Interface capability,,smdi.conf,res_smdi,,))
|
||||||
$(eval $(call BuildAsterisk13Module,res-sorcery,Sorcery data layer,,,,res_sorcery_astdb res_sorcery_config res_sorcery_memory res_sorcery_realtime,,))
|
$(eval $(call BuildAsterisk13Module,res-sorcery,Sorcery data layer,Sorcery backend modules for data access intended for using realtime as backend,,sorcery.conf,res_sorcery_astdb res_sorcery_config res_sorcery_memory res_sorcery_realtime,,))
|
||||||
$(eval $(call BuildAsterisk13Module,res-timing-pthread,pthread Timing Interface,,,,res_timing_pthread,,))
|
$(eval $(call BuildAsterisk13Module,res-speech,Speech Recognition API,Support for the Asterisk Generic Speech Recognition API,,,res_speech,,))
|
||||||
$(eval $(call BuildAsterisk13Module,res-timing-timerfd,Timerfd Timing Interface,,,,res_timing_timerfd,,))
|
$(eval $(call BuildAsterisk13Module,res-srtp,SRTP Support,Secure RTP connection,+libsrtp,,res_srtp,,))
|
||||||
$(eval $(call BuildAsterisk13Module,voicemail,Voicemail,voicemail related modules,,voicemail.conf,app_voicemail res_adsi res_smdi,vm-*,))
|
$(eval $(call BuildAsterisk13Module,res-timing-dahdi,DAHDI Timing Interface,DAHDI timing interface,+asterisk13-chan-dahdi,,res_timing_dahdi,,))
|
||||||
|
$(eval $(call BuildAsterisk13Module,res-timing-pthread,pthread Timing Interface,POSIX pthreads Timing Interface,,,res_timing_pthread,,))
|
||||||
|
$(eval $(call BuildAsterisk13Module,res-timing-timerfd,Timerfd Timing Interface,Timing interface provided by Linux kernel,,,res_timing_timerfd,,))
|
||||||
|
$(eval $(call BuildAsterisk13Module,res-xmpp,XMPP client and component module,reference module for interfacting Asterisk directly as a client or component with XMPP server,+libiksemel +libopenssl,xmpp.conf,res_xmpp,,))
|
||||||
|
$(eval $(call BuildAsterisk13Module,voicemail,Voicemail,voicemail related modules,+asterisk13-res-adsi +asterisk13-res-smdi,voicemail.conf,app_voicemail,vm-*,))
|
||||||
|
|
|
@ -14,8 +14,7 @@ start() {
|
||||||
[ -d $DEST/var/run/asterisk ] || mkdir -p $DEST/var/run/asterisk
|
[ -d $DEST/var/run/asterisk ] || mkdir -p $DEST/var/run/asterisk
|
||||||
[ -d $DEST/var/log/asterisk ] || mkdir -p $DEST/var/log/asterisk
|
[ -d $DEST/var/log/asterisk ] || mkdir -p $DEST/var/log/asterisk
|
||||||
[ -d $DEST/var/spool/asterisk ] || mkdir -p $DEST/var/spool/asterisk
|
[ -d $DEST/var/spool/asterisk ] || mkdir -p $DEST/var/spool/asterisk
|
||||||
[ -d $DEST/var/lib ] || mkdir -p $DEST/var/lib
|
[ -d $DEST/var/lib/asterisk ] || mkdir -p $DEST/var/lib/asterisk
|
||||||
[ -h $DEST/var/lib/asterisk ] || ln -s /usr/lib/asterisk /var/lib/asterisk
|
|
||||||
[ -d $DEST/var/lib/asterisk/keys ] || mkdir -p $DEST/var/lib/asterisk/keys
|
[ -d $DEST/var/lib/asterisk/keys ] || mkdir -p $DEST/var/lib/asterisk/keys
|
||||||
[ -d $DEST/var/log/asterisk/cdr-csv ] || mkdir -p $DEST/var/log/asterisk/cdr-csv
|
[ -d $DEST/var/log/asterisk/cdr-csv ] || mkdir -p $DEST/var/log/asterisk/cdr-csv
|
||||||
|
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
--- a/configure.ac
|
--- a/configure.ac
|
||||||
+++ b/configure.ac
|
+++ b/configure.ac
|
||||||
@@ -896,19 +896,6 @@ AC_LINK_IFELSE(
|
@@ -965,19 +965,6 @@ AC_LINK_IFELSE(
|
||||||
]
|
]
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
--- a/configure.ac
|
--- a/configure.ac
|
||||||
+++ b/configure.ac
|
+++ b/configure.ac
|
||||||
@@ -1202,7 +1202,6 @@ AC_LINK_IFELSE(
|
@@ -1299,7 +1299,6 @@ AC_LINK_IFELSE(
|
||||||
#include <resolv.h>],
|
#include <resolv.h>],
|
||||||
[int foo = res_ninit(NULL);])],
|
[int foo = res_ninit(NULL);])],
|
||||||
AC_MSG_RESULT(yes)
|
AC_MSG_RESULT(yes)
|
||||||
|
|
|
@ -1,13 +0,0 @@
|
||||||
--- a/include/asterisk/xml.h
|
|
||||||
+++ b/include/asterisk/xml.h
|
|
||||||
@@ -246,10 +246,5 @@ struct ast_xml_node *ast_xml_xpath_get_f
|
|
||||||
*/
|
|
||||||
struct ast_xml_xpath_results *ast_xml_query(struct ast_xml_doc *doc, const char *xpath_str);
|
|
||||||
|
|
||||||
-/* Features using ast_xml_ */
|
|
||||||
-#ifdef HAVE_LIBXML2
|
|
||||||
-#define AST_XML_DOCS
|
|
||||||
-#endif
|
|
||||||
-
|
|
||||||
#endif /* _ASTERISK_XML_H */
|
|
||||||
|
|
|
@ -31,7 +31,7 @@
|
||||||
@@ -114,9 +120,11 @@ struct ast_lock_track {
|
@@ -114,9 +120,11 @@ struct ast_lock_track {
|
||||||
int reentrancy;
|
int reentrancy;
|
||||||
const char *func[AST_MAX_REENTRANCY];
|
const char *func[AST_MAX_REENTRANCY];
|
||||||
pthread_t thread[AST_MAX_REENTRANCY];
|
pthread_t thread_id[AST_MAX_REENTRANCY];
|
||||||
+#ifndef __UCLIBC__
|
+#ifndef __UCLIBC__
|
||||||
#ifdef HAVE_BKTR
|
#ifdef HAVE_BKTR
|
||||||
struct ast_bt backtrace[AST_MAX_REENTRANCY];
|
struct ast_bt backtrace[AST_MAX_REENTRANCY];
|
||||||
|
@ -99,34 +99,3 @@
|
||||||
#define ast_suspend_lock_info(ignore);
|
#define ast_suspend_lock_info(ignore);
|
||||||
#define ast_restore_lock_info(ignore);
|
#define ast_restore_lock_info(ignore);
|
||||||
#endif /* !defined(LOW_MEMORY) */
|
#endif /* !defined(LOW_MEMORY) */
|
||||||
--- a/include/asterisk/utils.h
|
|
||||||
+++ b/include/asterisk/utils.h
|
|
||||||
@@ -25,7 +25,9 @@
|
|
||||||
|
|
||||||
#include "asterisk/network.h"
|
|
||||||
|
|
||||||
+#ifndef __UCLIBC__
|
|
||||||
#include <execinfo.h>
|
|
||||||
+#endif
|
|
||||||
#include <time.h> /* we want to override localtime_r */
|
|
||||||
#include <unistd.h>
|
|
||||||
#include <string.h>
|
|
||||||
@@ -540,13 +542,17 @@ extern void *_ast_mem_backtrace_buffer[_
|
|
||||||
* Ok, this sucks. But if we're already out of mem, we don't
|
|
||||||
* want the logger to create infinite recursion (and a crash).
|
|
||||||
*/
|
|
||||||
+#ifndef __UCLIBC__
|
|
||||||
#define MALLOC_FAILURE_MSG \
|
|
||||||
do { \
|
|
||||||
if (backtrace(_ast_mem_backtrace_buffer, _AST_MEM_BACKTRACE_BUFLEN) < _AST_MEM_BACKTRACE_BUFLEN) { \
|
|
||||||
ast_log(LOG_ERROR, "Memory Allocation Failure in function %s at line %d of %s\n", func, lineno, file); \
|
|
||||||
} \
|
|
||||||
} while (0)
|
|
||||||
-
|
|
||||||
+#else
|
|
||||||
+#define MALLOC_FAILURE_MSG \
|
|
||||||
+ ast_log(LOG_ERROR, "Memory Allocation Failure (compiled without backtrace support)");
|
|
||||||
+#endif
|
|
||||||
/*!
|
|
||||||
* \brief A wrapper for malloc()
|
|
||||||
*
|
|
||||||
|
|
|
@ -0,0 +1,22 @@
|
||||||
|
--- a/res/ael/ael.flex
|
||||||
|
+++ b/res/ael/ael.flex
|
||||||
|
@@ -595,7 +595,7 @@ includes { STORE_POS; return KW_INCLUDES
|
||||||
|
snprintf(fnamebuf2,sizeof(fnamebuf2), "%s/%s", (char *)ast_config_AST_CONFIG_DIR, fnamebuf);
|
||||||
|
ast_copy_string(fnamebuf,fnamebuf2,sizeof(fnamebuf));
|
||||||
|
}
|
||||||
|
-#ifdef SOLARIS
|
||||||
|
+#if !defined(HAVE_GLOB_NOMAGIC) || !defined(HAVE_GLOB_BRACE) || defined(DEBUG_NONGNU)
|
||||||
|
glob_ret = glob(fnamebuf, GLOB_NOCHECK, NULL, &globbuf);
|
||||||
|
#else
|
||||||
|
glob_ret = glob(fnamebuf, GLOB_NOMAGIC|GLOB_BRACE, NULL, &globbuf);
|
||||||
|
--- a/res/ael/ael_lex.c
|
||||||
|
+++ b/res/ael/ael_lex.c
|
||||||
|
@@ -1976,7 +1976,7 @@ YY_RULE_SETUP
|
||||||
|
snprintf(fnamebuf2,sizeof(fnamebuf2), "%s/%s", (char *)ast_config_AST_CONFIG_DIR, fnamebuf);
|
||||||
|
ast_copy_string(fnamebuf,fnamebuf2,sizeof(fnamebuf));
|
||||||
|
}
|
||||||
|
-#ifdef SOLARIS
|
||||||
|
+#if !defined(HAVE_GLOB_NOMAGIC) || !defined(HAVE_GLOB_BRACE) || defined(DEBUG_NONGNU)
|
||||||
|
glob_ret = glob(fnamebuf, GLOB_NOCHECK, NULL, &globbuf);
|
||||||
|
#else
|
||||||
|
glob_ret = glob(fnamebuf, GLOB_NOMAGIC|GLOB_BRACE, NULL, &globbuf);
|
101
net/asterisk-13.x/patches/040-AST-2018-008-13.diff
Normal file
101
net/asterisk-13.x/patches/040-AST-2018-008-13.diff
Normal file
|
@ -0,0 +1,101 @@
|
||||||
|
From 4eeb16d1a316aa3d6f5710a2f6beffb0fecb6121 Mon Sep 17 00:00:00 2001
|
||||||
|
From: Richard Mudgett <rmudgett@digium.com>
|
||||||
|
Date: Mon, 30 Apr 2018 17:38:58 -0500
|
||||||
|
Subject: [PATCH] AST-2018-008: Fix enumeration of endpoints from ACL rejected addresses.
|
||||||
|
|
||||||
|
When endpoint specific ACL rules block a SIP request they respond with a
|
||||||
|
403 forbidden. However, if an endpoint is not identified then a 401
|
||||||
|
unauthorized response is sent. This vulnerability just discloses which
|
||||||
|
requests hit a defined endpoint. The ACL rules cannot be bypassed to gain
|
||||||
|
access to the disclosed endpoints.
|
||||||
|
|
||||||
|
* Made endpoint specific ACL rules now respond with a 401 unauthorized
|
||||||
|
which is the same as if an endpoint were not identified. The fix is
|
||||||
|
accomplished by replacing the found endpoint with the artificial endpoint
|
||||||
|
which always fails authentication.
|
||||||
|
|
||||||
|
ASTERISK-27818
|
||||||
|
|
||||||
|
Change-Id: Icb275a54ff8e2df6c671a6d9bda37b5d732b3b32
|
||||||
|
---
|
||||||
|
|
||||||
|
diff --git a/res/res_pjsip/pjsip_distributor.c b/res/res_pjsip/pjsip_distributor.c
|
||||||
|
index e056b60..19266df 100644
|
||||||
|
--- a/res/res_pjsip/pjsip_distributor.c
|
||||||
|
+++ b/res/res_pjsip/pjsip_distributor.c
|
||||||
|
@@ -666,6 +666,26 @@
|
||||||
|
ao2_unlock(unid);
|
||||||
|
}
|
||||||
|
|
||||||
|
+static int apply_endpoint_acl(pjsip_rx_data *rdata, struct ast_sip_endpoint *endpoint);
|
||||||
|
+static int apply_endpoint_contact_acl(pjsip_rx_data *rdata, struct ast_sip_endpoint *endpoint);
|
||||||
|
+
|
||||||
|
+static void apply_acls(pjsip_rx_data *rdata)
|
||||||
|
+{
|
||||||
|
+ struct ast_sip_endpoint *endpoint;
|
||||||
|
+
|
||||||
|
+ /* Is the endpoint allowed with the source or contact address? */
|
||||||
|
+ endpoint = rdata->endpt_info.mod_data[endpoint_mod.id];
|
||||||
|
+ if (endpoint != artificial_endpoint
|
||||||
|
+ && (apply_endpoint_acl(rdata, endpoint)
|
||||||
|
+ || apply_endpoint_contact_acl(rdata, endpoint))) {
|
||||||
|
+ ast_debug(1, "Endpoint '%s' not allowed by ACL\n",
|
||||||
|
+ ast_sorcery_object_get_id(endpoint));
|
||||||
|
+
|
||||||
|
+ /* Replace the rdata endpoint with the artificial endpoint. */
|
||||||
|
+ ao2_replace(rdata->endpt_info.mod_data[endpoint_mod.id], artificial_endpoint);
|
||||||
|
+ }
|
||||||
|
+}
|
||||||
|
+
|
||||||
|
static pj_bool_t endpoint_lookup(pjsip_rx_data *rdata)
|
||||||
|
{
|
||||||
|
struct ast_sip_endpoint *endpoint;
|
||||||
|
@@ -684,6 +704,7 @@
|
||||||
|
ao2_unlink(unidentified_requests, unid);
|
||||||
|
ao2_ref(unid, -1);
|
||||||
|
}
|
||||||
|
+ apply_acls(rdata);
|
||||||
|
return PJ_FALSE;
|
||||||
|
}
|
||||||
|
|
||||||
|
@@ -743,6 +764,8 @@
|
||||||
|
ast_sip_report_invalid_endpoint(name, rdata);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
+
|
||||||
|
+ apply_acls(rdata);
|
||||||
|
return PJ_FALSE;
|
||||||
|
}
|
||||||
|
|
||||||
|
@@ -826,16 +849,11 @@
|
||||||
|
|
||||||
|
ast_assert(endpoint != NULL);
|
||||||
|
|
||||||
|
- if (endpoint!=artificial_endpoint) {
|
||||||
|
- if (apply_endpoint_acl(rdata, endpoint) || apply_endpoint_contact_acl(rdata, endpoint)) {
|
||||||
|
- if (!is_ack) {
|
||||||
|
- pjsip_endpt_respond_stateless(ast_sip_get_pjsip_endpoint(), rdata, 403, NULL, NULL, NULL);
|
||||||
|
- }
|
||||||
|
- return PJ_TRUE;
|
||||||
|
- }
|
||||||
|
+ if (is_ack) {
|
||||||
|
+ return PJ_FALSE;
|
||||||
|
}
|
||||||
|
|
||||||
|
- if (!is_ack && ast_sip_requires_authentication(endpoint, rdata)) {
|
||||||
|
+ if (ast_sip_requires_authentication(endpoint, rdata)) {
|
||||||
|
pjsip_tx_data *tdata;
|
||||||
|
struct unidentified_request *unid;
|
||||||
|
|
||||||
|
@@ -871,6 +889,10 @@
|
||||||
|
return PJ_TRUE;
|
||||||
|
}
|
||||||
|
pjsip_tx_data_dec_ref(tdata);
|
||||||
|
+ } else if (endpoint == artificial_endpoint) {
|
||||||
|
+ /* Uh. Oh. The artificial endpoint couldn't challenge so block the request. */
|
||||||
|
+ pjsip_endpt_respond_stateless(ast_sip_get_pjsip_endpoint(), rdata, 500, NULL, NULL, NULL);
|
||||||
|
+ return PJ_TRUE;
|
||||||
|
}
|
||||||
|
|
||||||
|
return PJ_FALSE;
|
||||||
|
|
124
net/asterisk-chan-dongle/Makefile
Normal file
124
net/asterisk-chan-dongle/Makefile
Normal file
|
@ -0,0 +1,124 @@
|
||||||
|
#
|
||||||
|
# Copyright (C) 2013 OpenWrt.org
|
||||||
|
#
|
||||||
|
# This is free software, licensed under the GNU General Public License v2.
|
||||||
|
# See /LICENSE for more information.
|
||||||
|
#
|
||||||
|
|
||||||
|
include $(TOPDIR)/rules.mk
|
||||||
|
|
||||||
|
PKG_NAME:=asterisk-chan-dongle
|
||||||
|
PKG_VERSION:=1.1-20170913
|
||||||
|
PKG_RELEASE:=1
|
||||||
|
|
||||||
|
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.xz
|
||||||
|
PKG_SOURCE_URL:=https://github.com/wdoekes/asterisk-chan-dongle.git
|
||||||
|
PKG_SOURCE_SUBDIR:=$(PKG_NAME)-$(PKG_VERSION)
|
||||||
|
PKG_SOURCE_VERSION:=4ef5ad7eea7245a031101875be08b924aa1e151b
|
||||||
|
PKG_SOURCE_PROTO:=git
|
||||||
|
|
||||||
|
PKG_BUILD_DIR:=$(BUILD_DIR)/$(PKG_NAME)-$(BUILD_VARIANT)/$(PKG_NAME)-$(PKG_VERSION)
|
||||||
|
|
||||||
|
PKG_FIXUP:=autoreconf
|
||||||
|
|
||||||
|
PKG_LICENSE:=GPL-2.0
|
||||||
|
PKG_LICENSE_FILES:=COPYRIGHT.txt LICENSE.txt
|
||||||
|
PKG_MAINTAINER:=Jiri Slachta <jiri@slachta.eu>
|
||||||
|
|
||||||
|
include $(INCLUDE_DIR)/package.mk
|
||||||
|
|
||||||
|
define Package/asterisk-chan-dongle/Default
|
||||||
|
SUBMENU:=Telephony
|
||||||
|
SECTION:=net
|
||||||
|
CATEGORY:=Network
|
||||||
|
URL:=https://github.com/wdoekes/asterisk-chan-dongle
|
||||||
|
DEPENDS:=+USE_UCLIBC:libiconv-full +kmod-usb-acm +kmod-usb-serial +kmod-usb-serial-option +libusb-1.0 +usb-modeswitch
|
||||||
|
TITLE:=Huawei UMTS 3G dongle support
|
||||||
|
endef
|
||||||
|
|
||||||
|
define Package/asterisk11-chan-dongle
|
||||||
|
$(call Package/asterisk-chan-dongle/Default)
|
||||||
|
DEPENDS+=asterisk11
|
||||||
|
VARIANT:=asterisk11
|
||||||
|
endef
|
||||||
|
|
||||||
|
define Package/asterisk13-chan-dongle
|
||||||
|
$(call Package/asterisk-chan-dongle/Default)
|
||||||
|
DEPENDS+=asterisk13
|
||||||
|
VARIANT:=asterisk13
|
||||||
|
endef
|
||||||
|
|
||||||
|
define Package/description/Default
|
||||||
|
Asterisk channel driver for Huawei UMTS 3G dongle.
|
||||||
|
endef
|
||||||
|
|
||||||
|
Package/asterisk11-chan-dongle/description = $(Package/description/Default)
|
||||||
|
Package/asterisk13-chan-dongle/description = $(Package/description/Default)
|
||||||
|
|
||||||
|
ifeq ($(BUILD_VARIANT),asterisk11)
|
||||||
|
CHAN_DONGLE_AST_HEADERS:=$(STAGING_DIR)/usr/include/asterisk-11/include
|
||||||
|
CONFIGURE_ARGS+= \
|
||||||
|
--with-astversion=11
|
||||||
|
endif
|
||||||
|
|
||||||
|
ifeq ($(BUILD_VARIANT),asterisk13)
|
||||||
|
CHAN_DONGLE_AST_HEADERS:=$(STAGING_DIR)/usr/include/asterisk-13/include
|
||||||
|
CONFIGURE_ARGS+= \
|
||||||
|
--with-astversion=13
|
||||||
|
endif
|
||||||
|
|
||||||
|
CONFIGURE_ARGS+= \
|
||||||
|
--with-asterisk=$(CHAN_DONGLE_AST_HEADERS)
|
||||||
|
|
||||||
|
TARGET_CFLAGS+= \
|
||||||
|
-I$(CHAN_DONGLE_AST_HEADERS)
|
||||||
|
|
||||||
|
# musl and glibc include their own iconv, but uclibc does not
|
||||||
|
ifneq ($(CONFIG_USE_UCLIBC),)
|
||||||
|
TARGET_CPPFLAGS+= \
|
||||||
|
-I$(STAGING_DIR)/usr/lib/libiconv-full/include
|
||||||
|
endif
|
||||||
|
|
||||||
|
CHAN_DONGLE_EXTRA_CFLAGS:= \
|
||||||
|
-Wno-old-style-declaration \
|
||||||
|
-I$(PKG_BUILD_DIR) \
|
||||||
|
$(TARGET_CPPFLAGS) \
|
||||||
|
-D_GNU_SOURCE \
|
||||||
|
-DHAVE_CONFIG_H \
|
||||||
|
$(FPIC)
|
||||||
|
|
||||||
|
MAKE_ARGS:= \
|
||||||
|
CC="$(TARGET_CC)" \
|
||||||
|
LD="$(TARGET_CC)" \
|
||||||
|
CFLAGS="$(TARGET_CFLAGS) $(CHAN_DONGLE_EXTRA_CFLAGS)" \
|
||||||
|
LDFLAGS="$(TARGET_LDFLAGS) $(if $(CONFIG_USE_UCLIBC),-L$(STAGING_DIR)/usr/lib/libiconv-full/lib -liconv)"
|
||||||
|
|
||||||
|
# $CHAN_DONGLE_ICONV_INC used by 200-fix-iconv-detection.patch
|
||||||
|
CONFIGURE_VARS += \
|
||||||
|
CHAN_DONGLE_ICONV_INC="$(TOOLCHAIN_DIR)/include $(STAGING_DIR)/usr/lib/libiconv-full/include" \
|
||||||
|
ac_cv_type_size_t=yes \
|
||||||
|
ac_cv_type_ssize_t=yes
|
||||||
|
|
||||||
|
define Build/Compile
|
||||||
|
$(MAKE) $(PKG_JOBS) -C "$(PKG_BUILD_DIR)" $(MAKE_ARGS)
|
||||||
|
endef
|
||||||
|
|
||||||
|
define Package/conffiles/Default
|
||||||
|
/etc/asterisk/dongle.conf
|
||||||
|
endef
|
||||||
|
|
||||||
|
Package/asterisk11-chan-dongle/conffiles = $(Package/conffiles/Default)
|
||||||
|
Package/asterisk13-chan-dongle/conffiles = $(Package/conffiles/Default)
|
||||||
|
|
||||||
|
define Package/Install/Default
|
||||||
|
$(INSTALL_DIR) $(1)/etc/asterisk
|
||||||
|
$(INSTALL_DATA) $(PKG_BUILD_DIR)/etc/dongle.conf $(1)/etc/asterisk/
|
||||||
|
$(INSTALL_DIR) $(1)/usr/lib/asterisk/modules
|
||||||
|
$(INSTALL_BIN) $(PKG_BUILD_DIR)/chan_dongle.so $(1)/usr/lib/asterisk/modules/
|
||||||
|
endef
|
||||||
|
|
||||||
|
Package/asterisk11-chan-dongle/install = $(Package/Install/Default)
|
||||||
|
Package/asterisk13-chan-dongle/install = $(Package/Install/Default)
|
||||||
|
|
||||||
|
$(eval $(call BuildPackage,asterisk11-chan-dongle))
|
||||||
|
$(eval $(call BuildPackage,asterisk13-chan-dongle))
|
|
@ -0,0 +1,11 @@
|
||||||
|
--- a/configure.ac
|
||||||
|
+++ b/configure.ac
|
||||||
|
@@ -102,7 +102,7 @@ AC_DEFUN([AC_HEADER_FIND], [
|
||||||
|
)
|
||||||
|
|
||||||
|
AC_HEADER_FIND([asterisk.h], $with_asterisk)
|
||||||
|
-AC_HEADER_FIND([iconv.h], /usr/include /usr/local/include /opt/local/include)
|
||||||
|
+AC_HEADER_FIND([iconv.h], ${CHAN_DONGLE_ICONV_INC})
|
||||||
|
|
||||||
|
AC_DEFINE([ICONV_CONST],[], [Define to const if you has iconv() const declaration of input buffer])
|
||||||
|
AC_MSG_CHECKING([for iconv use const inbuf])
|
|
@ -9,7 +9,7 @@ include $(TOPDIR)/rules.mk
|
||||||
|
|
||||||
PKG_NAME:=asterisk-g72x
|
PKG_NAME:=asterisk-g72x
|
||||||
PKG_VERSION:=1.3
|
PKG_VERSION:=1.3
|
||||||
PKG_RELEASE:=1
|
PKG_RELEASE:=2
|
||||||
|
|
||||||
PKG_SOURCE:=asterisk-g72x-$(PKG_VERSION).tar.bz2
|
PKG_SOURCE:=asterisk-g72x-$(PKG_VERSION).tar.bz2
|
||||||
PKG_SOURCE_URL:=http://asterisk.hosting.lv/src/
|
PKG_SOURCE_URL:=http://asterisk.hosting.lv/src/
|
||||||
|
@ -23,6 +23,8 @@ PKG_LICENSE:=GPL-3.0
|
||||||
PKG_LICENSE_FILES:=README.md
|
PKG_LICENSE_FILES:=README.md
|
||||||
PKG_MAINTAINER:=Alex Samorukov <samm@os2.kiev.ua>
|
PKG_MAINTAINER:=Alex Samorukov <samm@os2.kiev.ua>
|
||||||
|
|
||||||
|
PKG_BUILD_DIR:=$(BUILD_DIR)/$(PKG_NAME)-$(BUILD_VARIANT)/$(PKG_NAME)-$(PKG_VERSION)
|
||||||
|
|
||||||
include $(INCLUDE_DIR)/package.mk
|
include $(INCLUDE_DIR)/package.mk
|
||||||
|
|
||||||
define Package/asterisk-g72x/Default
|
define Package/asterisk-g72x/Default
|
||||||
|
@ -60,52 +62,26 @@ Package/asterisk18-codec-g729/description = $(Package/description/Default)
|
||||||
Package/asterisk11-codec-g729/description = $(Package/description/Default)
|
Package/asterisk11-codec-g729/description = $(Package/description/Default)
|
||||||
Package/asterisk13-codec-g729/description = $(Package/description/Default)
|
Package/asterisk13-codec-g729/description = $(Package/description/Default)
|
||||||
|
|
||||||
ifeq ($(BUILD_VARIANT),asterisk18)
|
CONFIGURE_ARGS += \
|
||||||
MAKE_ARGS:= \
|
--with-bcg729 \
|
||||||
CC="$(TARGET_CC)" \
|
--enable-shared
|
||||||
LD="$(TARGET_LD)" \
|
|
||||||
CFLAGS="$(TARGET_CFLAGS) -DASTERISK_VERSION_NUM=110000 -DLOW_MEMORY -D_XOPEN_SOURCE=600 $(TARGET_CPPFLAGS) -I$(STAGING_DIR)/usr/include/asterisk-1.8/include -DHAVE_CONFIG_H -I. -fPIC" \
|
|
||||||
LDFLAGS="$(TARGET_LDFLAGS)" \
|
|
||||||
DESTDIR="$(PKG_INSTALL_DIR)"
|
|
||||||
|
|
||||||
|
ifeq ($(BUILD_VARIANT),asterisk18)
|
||||||
CONFIGURE_ARGS += \
|
CONFIGURE_ARGS += \
|
||||||
--with-asterisk-includes=$(STAGING_DIR)/usr/include/asterisk-1.8/include \
|
--with-asterisk-includes=$(STAGING_DIR)/usr/include/asterisk-1.8/include \
|
||||||
--with-asterisk18 \
|
--with-asterisk18
|
||||||
--with-bcg729 \
|
|
||||||
--enable-shared \
|
|
||||||
$(MAKE_ARGS)
|
|
||||||
endif
|
endif
|
||||||
|
|
||||||
ifeq ($(BUILD_VARIANT),asterisk11)
|
ifeq ($(BUILD_VARIANT),asterisk11)
|
||||||
MAKE_ARGS:= \
|
|
||||||
CC="$(TARGET_CC)" \
|
|
||||||
LD="$(TARGET_LD)" \
|
|
||||||
CFLAGS="$(TARGET_CFLAGS) -DASTERISK_VERSION_NUM=110000 -DLOW_MEMORY -D_XOPEN_SOURCE=600 $(TARGET_CPPFLAGS) -I$(STAGING_DIR)/usr/include/asterisk-11/include -DHAVE_CONFIG_H -I. -fPIC" \
|
|
||||||
LDFLAGS="$(TARGET_LDFLAGS)" \
|
|
||||||
DESTDIR="$(PKG_INSTALL_DIR)"
|
|
||||||
|
|
||||||
CONFIGURE_ARGS += \
|
CONFIGURE_ARGS += \
|
||||||
--with-asterisk-includes=$(STAGING_DIR)/usr/include/asterisk-11/include \
|
--with-asterisk-includes=$(STAGING_DIR)/usr/include/asterisk-11/include \
|
||||||
--with-asterisk100 \
|
--with-asterisk100
|
||||||
--with-bcg729 \
|
|
||||||
--enable-shared \
|
|
||||||
$(MAKE_ARGS)
|
|
||||||
endif
|
endif
|
||||||
|
|
||||||
ifeq ($(BUILD_VARIANT),asterisk13)
|
ifeq ($(BUILD_VARIANT),asterisk13)
|
||||||
MAKE_ARGS:= \
|
|
||||||
CC="$(TARGET_CC)" \
|
|
||||||
LD="$(TARGET_LD)" \
|
|
||||||
CFLAGS="$(TARGET_CFLAGS) -DASTERISK_VERSION_NUM=130000 -DLOW_MEMORY -D_XOPEN_SOURCE=600 $(TARGET_CPPFLAGS) -I$(STAGING_DIR)/usr/include/asterisk-13/include -DHAVE_CONFIG_H -I. -fPIC" \
|
|
||||||
LDFLAGS="$(TARGET_LDFLAGS)" \
|
|
||||||
DESTDIR="$(PKG_INSTALL_DIR)"
|
|
||||||
|
|
||||||
CONFIGURE_ARGS += \
|
CONFIGURE_ARGS += \
|
||||||
--with-asterisk-includes=$(STAGING_DIR)/usr/include/asterisk-13/include \
|
--with-asterisk-includes=$(STAGING_DIR)/usr/include/asterisk-13/include \
|
||||||
--with-asterisk130 \
|
--with-asterisk130
|
||||||
--with-bcg729 \
|
|
||||||
--enable-shared \
|
|
||||||
$(MAKE_ARGS)
|
|
||||||
endif
|
endif
|
||||||
|
|
||||||
define Package/Install/Default
|
define Package/Install/Default
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
#
|
#
|
||||||
# Copyright (C) 2010-2014 OpenWrt.org
|
# Copyright (C) 2010-2017 OpenWrt.org
|
||||||
# Copyright (C) 2010 Alfred E. Heggestad
|
# Copyright (C) 2010 Alfred E. Heggestad
|
||||||
#
|
#
|
||||||
# This is free software, licensed under the GNU General Public License v2.
|
# This is free software, licensed under the GNU General Public License v2.
|
||||||
|
@ -9,16 +9,16 @@
|
||||||
include $(TOPDIR)/rules.mk
|
include $(TOPDIR)/rules.mk
|
||||||
|
|
||||||
PKG_NAME:=baresip
|
PKG_NAME:=baresip
|
||||||
PKG_VERSION:=0.4.12
|
PKG_VERSION:=0.5.6
|
||||||
PKG_RELEASE:=2
|
PKG_RELEASE:=1
|
||||||
|
|
||||||
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
|
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
|
||||||
PKG_SOURCE_URL:=http://www.creytiv.com/pub/
|
PKG_SOURCE_URL:=http://www.creytiv.com/pub/
|
||||||
PKG_MD5SUM:=93c0ea33ec0e96b89b1c3e0f78b72c5b
|
PKG_HASH:=148defef160842e0247af92c84bb0c8de4b36ffa68cf3a87c4cd7e510cddd00c
|
||||||
|
|
||||||
PKG_LICENSE:=BSD-3-Clause
|
PKG_LICENSE:=BSD-3-Clause
|
||||||
PKG_LICENSE_FILES:=docs/COPYING
|
PKG_LICENSE_FILES:=docs/COPYING
|
||||||
PKG_MAINTAINER:=Jiri Slachta <slachta@cesnet.cz>
|
PKG_MAINTAINER:=Jiri Slachta <jiri@slachta.eu>
|
||||||
|
|
||||||
baresip-mods:= \
|
baresip-mods:= \
|
||||||
alsa \
|
alsa \
|
||||||
|
@ -28,12 +28,12 @@ baresip-mods:= \
|
||||||
evdev \
|
evdev \
|
||||||
g711 \
|
g711 \
|
||||||
g722 \
|
g722 \
|
||||||
|
g726 \
|
||||||
|
opus \
|
||||||
oss \
|
oss \
|
||||||
speex \
|
|
||||||
stdio \
|
stdio \
|
||||||
uuid \
|
|
||||||
v4l \
|
v4l \
|
||||||
v4l2 \
|
v4l2
|
||||||
|
|
||||||
PKG_CONFIG_DEPENDS:= \
|
PKG_CONFIG_DEPENDS:= \
|
||||||
$(patsubst %,CONFIG_PACKAGE_baresip-mod-%,$(baresip-mods)) \
|
$(patsubst %,CONFIG_PACKAGE_baresip-mod-%,$(baresip-mods)) \
|
||||||
|
@ -61,15 +61,16 @@ baresip-mod-cons := USE_CONS
|
||||||
baresip-mod-evdev := USE_EVDEV
|
baresip-mod-evdev := USE_EVDEV
|
||||||
baresip-mod-g711 := USE_G711
|
baresip-mod-g711 := USE_G711
|
||||||
baresip-mod-g722 := USE_G722
|
baresip-mod-g722 := USE_G722
|
||||||
|
baresip-mod-g726 := USE_G726
|
||||||
|
baresip-mod-opus := USE_OPUS
|
||||||
baresip-mod-oss := USE_OSS
|
baresip-mod-oss := USE_OSS
|
||||||
baresip-mod-speex := USE_SPEEX
|
|
||||||
baresip-mod-stdio := USE_STDIO
|
baresip-mod-stdio := USE_STDIO
|
||||||
baresip-mod-uuid := USE_UUID
|
|
||||||
baresip-mod-v4l := USE_V4L
|
baresip-mod-v4l := USE_V4L
|
||||||
baresip-mod-v4l2 := USE_V4L2
|
baresip-mod-v4l2 := USE_V4L2
|
||||||
|
|
||||||
BARESIP_MOD_OPTIONS:= \
|
BARESIP_MOD_OPTIONS:= \
|
||||||
MOD_AUTODETECT= \
|
MOD_AUTODETECT= \
|
||||||
|
EXTRA_MODULES="dtmfio" \
|
||||||
$(foreach m,$(baresip-mods),$(baresip-mod-$(m))=$(if $(CONFIG_PACKAGE_baresip-mod-$(m)),1))
|
$(foreach m,$(baresip-mods),$(baresip-mod-$(m))=$(if $(CONFIG_PACKAGE_baresip-mod-$(m)),1))
|
||||||
|
|
||||||
TARGET_CFLAGS += $(FPIC)
|
TARGET_CFLAGS += $(FPIC)
|
||||||
|
@ -96,7 +97,7 @@ define Package/baresip/install
|
||||||
$(INSTALL_DIR) $(1)/usr/bin
|
$(INSTALL_DIR) $(1)/usr/bin
|
||||||
$(CP) $(PKG_INSTALL_DIR)/usr/bin/baresip $(1)/usr/bin/
|
$(CP) $(PKG_INSTALL_DIR)/usr/bin/baresip $(1)/usr/bin/
|
||||||
$(INSTALL_DIR) $(1)/usr/lib/baresip/modules
|
$(INSTALL_DIR) $(1)/usr/lib/baresip/modules
|
||||||
$(CP) \
|
$(INSTALL_BIN) \
|
||||||
$(PKG_INSTALL_DIR)/usr/lib/baresip/modules/{account,auloop,contact,ice,menu,stun,turn}.so \
|
$(PKG_INSTALL_DIR)/usr/lib/baresip/modules/{account,auloop,contact,ice,menu,stun,turn}.so \
|
||||||
$(1)/usr/lib/baresip/modules/.
|
$(1)/usr/lib/baresip/modules/.
|
||||||
$(INSTALL_DIR) $(1)/usr/share/baresip
|
$(INSTALL_DIR) $(1)/usr/share/baresip
|
||||||
|
@ -139,12 +140,14 @@ $(eval $(call BuildPlugin,alsa,ALSA audio driver,alsa,+PACKAGE_baresip-mod-alsa:
|
||||||
$(eval $(call BuildPlugin,avcodec,FFmpeg video codecs,avcodec,+PACKAGE_baresip-mod-avcodec:libffmpeg-full))
|
$(eval $(call BuildPlugin,avcodec,FFmpeg video codecs,avcodec,+PACKAGE_baresip-mod-avcodec:libffmpeg-full))
|
||||||
$(eval $(call BuildPlugin,avformat,FFmpeg video source,avformat,+PACKAGE_baresip-mod-avformat:libffmpeg-full))
|
$(eval $(call BuildPlugin,avformat,FFmpeg video source,avformat,+PACKAGE_baresip-mod-avformat:libffmpeg-full))
|
||||||
$(eval $(call BuildPlugin,cons,console UI,cons,))
|
$(eval $(call BuildPlugin,cons,console UI,cons,))
|
||||||
|
$(eval $(call BuildPlugin,dtmfio,DTMF input/output,dtmfio,))
|
||||||
$(eval $(call BuildPlugin,evdev,input event device UI,evdev,))
|
$(eval $(call BuildPlugin,evdev,input event device UI,evdev,))
|
||||||
$(eval $(call BuildPlugin,g711,G.711 audio codec,g711,))
|
$(eval $(call BuildPlugin,g711,G.711 audio codec,g711,))
|
||||||
$(eval $(call BuildPlugin,g722,G.722 audio codec,g722,+PACKAGE_baresip-mod-g722:libspandsp))
|
$(eval $(call BuildPlugin,g722,G.722 audio codec,g722,+PACKAGE_baresip-mod-g722:libspandsp))
|
||||||
|
$(eval $(call BuildPlugin,g726,G.726 audio codec,g726,+PACKAGE_baresip-mod-g726:libspandsp))
|
||||||
|
$(eval $(call BuildPlugin,httpd,Webserver UI module,httpd,))
|
||||||
|
$(eval $(call BuildPlugin,opus,Opus audio codec,opus,+PACKAGE_baresip-mod-opus:libopus))
|
||||||
$(eval $(call BuildPlugin,oss,OSS audio driver,oss,))
|
$(eval $(call BuildPlugin,oss,OSS audio driver,oss,))
|
||||||
$(eval $(call BuildPlugin,speex,Speex audio codec,speex,+PACKAGE_baresip-mod-speex:libspeex))
|
|
||||||
$(eval $(call BuildPlugin,stdio,standard I/O UI,stdio,))
|
$(eval $(call BuildPlugin,stdio,standard I/O UI,stdio,))
|
||||||
$(eval $(call BuildPlugin,uuid,UUID,uuid,+libuuid))
|
|
||||||
$(eval $(call BuildPlugin,v4l,Video4Linux video source,v4l,+PACKAGE_baresip-mod-v4l:libv4l))
|
$(eval $(call BuildPlugin,v4l,Video4Linux video source,v4l,+PACKAGE_baresip-mod-v4l:libv4l))
|
||||||
$(eval $(call BuildPlugin,v4l2,Video4Linux2 video source,v4l2,+PACKAGE_baresip-mod-v4l2:libv4l))
|
$(eval $(call BuildPlugin,v4l2,Video4Linux2 video source,v4l2,+PACKAGE_baresip-mod-v4l2:libv4l))
|
||||||
|
|
|
@ -9,49 +9,70 @@
|
||||||
include $(TOPDIR)/rules.mk
|
include $(TOPDIR)/rules.mk
|
||||||
|
|
||||||
PKG_NAME:=chan-sccp-b
|
PKG_NAME:=chan-sccp-b
|
||||||
PKG_REV:=5845
|
PKG_REV:=6139
|
||||||
PKG_VERSION:=v4.2-r$(PKG_REV)
|
PKG_VERSION:=v4.2-r$(PKG_REV)
|
||||||
PKG_RELEASE:=1
|
PKG_RELEASE:=4
|
||||||
|
|
||||||
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
|
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
|
||||||
PKG_SOURCE_URL:=http://svn.code.sf.net/p/chan-sccp-b/code/tags/openwrt
|
PKG_SOURCE_URL:=http://svn.code.sf.net/p/chan-sccp-b/code/branches/v4.2
|
||||||
PKG_SOURCE_SUBDIR:=$(PKG_NAME)-$(PKG_VERSION)
|
PKG_SOURCE_SUBDIR:=$(PKG_NAME)-$(PKG_VERSION)
|
||||||
PKG_SOURCE_VERSION:=$(PKG_REV)
|
PKG_SOURCE_VERSION:=$(PKG_REV)
|
||||||
PKG_SOURCE_PROTO:=svn
|
PKG_SOURCE_PROTO:=svn
|
||||||
|
|
||||||
PKG_FIXUP:=autoreconf -fi
|
PKG_FIXUP:=autoreconf
|
||||||
|
|
||||||
PKG_LICENSE:=GPL-1.0
|
PKG_LICENSE:=GPL-1.0
|
||||||
PKG_LICENSE_FILES:=COPYING LICENSE
|
PKG_LICENSE_FILES:=COPYING LICENSE
|
||||||
PKG_MAINTAINER:=Jiri Slachta <slachta@cesnet.cz>
|
PKG_MAINTAINER:=Jiri Slachta <jiri@slachta.eu>
|
||||||
|
|
||||||
|
PKG_INSTALL:=1
|
||||||
|
|
||||||
|
PKG_BUILD_DIR:=$(BUILD_DIR)/$(PKG_NAME)-$(BUILD_VARIANT)/$(PKG_NAME)-$(PKG_VERSION)
|
||||||
|
|
||||||
|
PKG_BUILD_DEPENDS:=libiconv
|
||||||
|
|
||||||
include $(INCLUDE_DIR)/package.mk
|
include $(INCLUDE_DIR)/package.mk
|
||||||
|
|
||||||
|
# musl and glibc include their own iconv, but uclibc does not
|
||||||
|
ifneq ($(CONFIG_USE_UCLIBC),)
|
||||||
|
TARGET_CPPFLAGS+= \
|
||||||
|
-I$(STAGING_DIR)/usr/lib/libiconv-full/include
|
||||||
|
TARGET_LDFLAGS+= \
|
||||||
|
-L$(STAGING_DIR)/usr/lib/libiconv-full/lib -liconv
|
||||||
|
endif
|
||||||
|
|
||||||
|
CONFIGURE_ARGS += \
|
||||||
|
--enable-optimization=no \
|
||||||
|
--enable-debug=no
|
||||||
|
|
||||||
define Package/chan-sccp-b/Default
|
define Package/chan-sccp-b/Default
|
||||||
SUBMENU:=Telephony
|
SUBMENU:=Telephony
|
||||||
SECTION:=net
|
SECTION:=net
|
||||||
CATEGORY:=Network
|
CATEGORY:=Network
|
||||||
TITLE:=SCCP channel provider support
|
TITLE:=SCCP channel provider support
|
||||||
URL:=http://chan-sccp-b.sourceforge.net/
|
URL:=http://chan-sccp-b.sourceforge.net/
|
||||||
DEPENDS:= +libltdl
|
DEPENDS:=+USE_UCLIBC:libiconv-full +libltdl
|
||||||
endef
|
endef
|
||||||
|
|
||||||
define Package/asterisk18-chan-sccp-b
|
define Package/asterisk18-chan-sccp-b
|
||||||
$(call Package/chan-sccp-b/Default)
|
$(call Package/chan-sccp-b/Default)
|
||||||
DEPENDS+= asterisk18
|
DEPENDS+= asterisk18
|
||||||
VARIANT:=asterisk18
|
VARIANT:=asterisk18
|
||||||
|
CONFLICTS:=asterisk18-chan-skinny
|
||||||
endef
|
endef
|
||||||
|
|
||||||
define Package/asterisk13-chan-sccp-b
|
define Package/asterisk13-chan-sccp-b
|
||||||
$(call Package/chan-sccp-b/Default)
|
$(call Package/chan-sccp-b/Default)
|
||||||
DEPENDS+= asterisk13
|
DEPENDS+= asterisk13
|
||||||
VARIANT:=asterisk13
|
VARIANT:=asterisk13
|
||||||
|
CONFLICTS:=asterisk13-chan-skinny
|
||||||
endef
|
endef
|
||||||
|
|
||||||
define Package/asterisk11-chan-sccp-b
|
define Package/asterisk11-chan-sccp-b
|
||||||
$(call Package/chan-sccp-b/Default)
|
$(call Package/chan-sccp-b/Default)
|
||||||
DEPENDS+= asterisk11
|
DEPENDS+= asterisk11
|
||||||
VARIANT:=asterisk11
|
VARIANT:=asterisk11
|
||||||
|
CONFLICTS:=asterisk11-chan-skinny
|
||||||
endef
|
endef
|
||||||
|
|
||||||
define Package/description/Default
|
define Package/description/Default
|
||||||
|
@ -77,24 +98,25 @@ endif
|
||||||
|
|
||||||
define Package/conffiles/Default
|
define Package/conffiles/Default
|
||||||
/etc/asterisk/sccp.conf
|
/etc/asterisk/sccp.conf
|
||||||
|
/etc/asterisk/extconfig.conf.sccp_sample
|
||||||
|
/etc/asterisk/res_config_sqlite3.conf.sccp_sample
|
||||||
|
/etc/asterisk/sccp_sqlite3.sql
|
||||||
|
/etc/asterisk/sccp.conf.realtime_sample
|
||||||
endef
|
endef
|
||||||
|
|
||||||
Package/asterisk18-chan-sccp-b/conffiles = $(Package/conffiles/Default)
|
Package/asterisk18-chan-sccp-b/conffiles = $(Package/conffiles/Default)
|
||||||
Package/asterisk11-chan-sccp-b/conffiles = $(Package/conffiles/Default)
|
Package/asterisk11-chan-sccp-b/conffiles = $(Package/conffiles/Default)
|
||||||
Package/asterisk13-chan-sccp-b/conffiles = $(Package/conffiles/Default)
|
Package/asterisk13-chan-sccp-b/conffiles = $(Package/conffiles/Default)
|
||||||
|
|
||||||
define Build/Compile
|
|
||||||
$(MAKE) -C "$(PKG_BUILD_DIR)" \
|
|
||||||
CFLAGS="$(CFLAGS) -I$(PKG_BUILD_DIR)/src -DLOW_MEMORY" \
|
|
||||||
DESTDIR="$(PKG_INSTALL_DIR)" \
|
|
||||||
all install
|
|
||||||
endef
|
|
||||||
|
|
||||||
define Package/Install/Default
|
define Package/Install/Default
|
||||||
$(INSTALL_DIR) $(1)/etc/asterisk
|
$(INSTALL_DIR) $(1)/etc/asterisk
|
||||||
$(CP) ./files/sccp.conf $(1)/etc/asterisk/sccp.conf
|
$(CP) ./files/sccp.conf $(1)/etc/asterisk/sccp.conf
|
||||||
$(INSTALL_DIR) $(1)/usr/lib/asterisk/modules
|
$(INSTALL_DIR) $(1)/usr/lib/asterisk/modules
|
||||||
$(CP) $(PKG_INSTALL_DIR)/usr/lib/asterisk/modules/chan_sccp.so $(1)/usr/lib/asterisk/modules/
|
$(INSTALL_BIN) $(PKG_INSTALL_DIR)/usr/lib/asterisk/modules/chan_sccp.so $(1)/usr/lib/asterisk/modules/
|
||||||
|
$(INSTALL_DATA) ./files/extconfig.conf.sccp_sample $(1)/etc/asterisk/extconfig.conf.sccp_sample
|
||||||
|
$(INSTALL_DATA) ./files/res_config_sqlite3.conf.sccp_sample $(1)/etc/asterisk/res_config_sqlite3.conf.sccp_sample
|
||||||
|
$(INSTALL_DATA) ./files/sccp_sqlite3.sql $(1)/etc/asterisk/sccp_sqlite3.sql
|
||||||
|
$(INSTALL_DATA) ./files/sccp.conf.realtime_sample $(1)/etc/asterisk/sccp.conf.realtime_sample
|
||||||
endef
|
endef
|
||||||
|
|
||||||
Package/asterisk18-chan-sccp-b/install = $(Package/Install/Default)
|
Package/asterisk18-chan-sccp-b/install = $(Package/Install/Default)
|
||||||
|
|
3
net/chan-sccp-b/files/extconfig.conf.sccp_sample
Normal file
3
net/chan-sccp-b/files/extconfig.conf.sccp_sample
Normal file
|
@ -0,0 +1,3 @@
|
||||||
|
[settings]
|
||||||
|
sccpdevice => sqlite3,asterisk,sccpdeviceconfig
|
||||||
|
sccpline => sqlite3,asterisk,sccpline
|
|
@ -0,0 +1,5 @@
|
||||||
|
[asterisk]
|
||||||
|
dbfile => /usr/lib/asterisk/realtime.sqlite3
|
||||||
|
debug=yes
|
||||||
|
requirements=warn
|
||||||
|
;batch=1000
|
|
@ -44,7 +44,7 @@ allow = alaw
|
||||||
allow = gsm
|
allow = gsm
|
||||||
directrtp = on
|
directrtp = on
|
||||||
|
|
||||||
[SEP00a1a2a3a4a5]
|
[SEP00A1B2C3D4E5]
|
||||||
type = device
|
type = device
|
||||||
description = Phone Number Two
|
description = Phone Number Two
|
||||||
devicetype = 7960
|
devicetype = 7960
|
||||||
|
|
30
net/chan-sccp-b/files/sccp.conf.realtime_sample
Normal file
30
net/chan-sccp-b/files/sccp.conf.realtime_sample
Normal file
|
@ -0,0 +1,30 @@
|
||||||
|
[general]
|
||||||
|
servername = Openwrt
|
||||||
|
keepalive = 60
|
||||||
|
debug = core
|
||||||
|
context = default
|
||||||
|
dateformat = D/M/Y
|
||||||
|
bindaddr = ::
|
||||||
|
port = 2000
|
||||||
|
disallow = all
|
||||||
|
allow = ulaw
|
||||||
|
allow = alaw
|
||||||
|
allow = g729
|
||||||
|
firstdigittimeout = 16
|
||||||
|
digittimeout = 6
|
||||||
|
autoanswer_ring_time = 1
|
||||||
|
transfer_on_hangup = off
|
||||||
|
musicclass = default
|
||||||
|
language = en
|
||||||
|
deny = 0.0.0.0/0.0.0.0
|
||||||
|
permit = internal
|
||||||
|
dndFeature = on
|
||||||
|
echocancel = off
|
||||||
|
silencesuppression = off
|
||||||
|
|
||||||
|
hotline_enabled = yes
|
||||||
|
hotline_context = default
|
||||||
|
hotline_extension = 111
|
||||||
|
|
||||||
|
devicetable = sccpdevice
|
||||||
|
linetable = sccpline
|
123
net/chan-sccp-b/files/sccp_sqlite3.sql
Normal file
123
net/chan-sccp-b/files/sccp_sqlite3.sql
Normal file
|
@ -0,0 +1,123 @@
|
||||||
|
/*
|
||||||
|
* this is for users how like to sepatet device and button configuration
|
||||||
|
* You have to change the table names to:
|
||||||
|
*
|
||||||
|
* sccpdevices -> sccpdeviceconfig
|
||||||
|
* sccplines -> sccpline
|
||||||
|
*/
|
||||||
|
|
||||||
|
PRAGMA auto_vacuum=2;
|
||||||
|
--
|
||||||
|
-- Table with line-configuration
|
||||||
|
--
|
||||||
|
CREATE TABLE sccpdevice (
|
||||||
|
type varchar(45) DEFAULT NULL,
|
||||||
|
addon varchar(45) DEFAULT NULL,
|
||||||
|
description varchar(45) DEFAULT NULL,
|
||||||
|
tzoffset varchar(5) DEFAULT NULL,
|
||||||
|
transfer varchar(5) DEFAULT 'on',
|
||||||
|
cfwdall varchar(5) DEFAULT 'on',
|
||||||
|
cfwdbusy varchar(5) DEFAULT 'on',
|
||||||
|
imageversion varchar(45) DEFAULT NULL,
|
||||||
|
deny varchar(45) DEFAULT NULL,
|
||||||
|
permit varchar(45) DEFAULT NULL,
|
||||||
|
dndFeature varchar(5) DEFAULT 'on',
|
||||||
|
directrtp varchar(3) DEFAULT 'off',
|
||||||
|
earlyrtp varchar(8) DEFAULT 'off',
|
||||||
|
mwilamp varchar(5) DEFAULT 'on',
|
||||||
|
mwioncall varchar(5) DEFAULT 'off',
|
||||||
|
pickupexten varchar(5) DEFAULT 'on',
|
||||||
|
pickupcontext varchar(100) DEFAULT '',
|
||||||
|
pickupmodeanswer varchar(5) DEFAULT 'on',
|
||||||
|
private varchar(5) DEFAULT 'off',
|
||||||
|
privacy varchar(100) DEFAULT 'full',
|
||||||
|
nat varchar(4) DEFAULT 'auto',
|
||||||
|
softkeyset varchar(100) DEFAULT '',
|
||||||
|
audio_tos varchar(11) DEFAULT NULL,
|
||||||
|
audio_cos varchar(1) DEFAULT NULL,
|
||||||
|
video_tos varchar(11) DEFAULT NULL,
|
||||||
|
video_cos varchar(1) DEFAULT NULL,
|
||||||
|
conf_allow varchar(3) DEFAULT 'on',
|
||||||
|
conf_play_general_announce varchar(3) DEFAULT 'on',
|
||||||
|
conf_play_part_announce varchar(3) DEFAULT 'on',
|
||||||
|
conf_mute_on_entry varchar(3) DEFAULT 'off',
|
||||||
|
conf_music_on_hold_class varchar(80) DEFAULT 'default',
|
||||||
|
conf_show_conflist varchar(3) DEFAULT 'on',
|
||||||
|
backgroundImage varchar(255) DEFAULT '',
|
||||||
|
ringtone varchar(255) DEFAULT '',
|
||||||
|
setvar varchar(100) DEFAULT NULL,
|
||||||
|
disallow varchar(255) DEFAULT NULL,
|
||||||
|
allow varchar(255) DEFAULT NULL,
|
||||||
|
name varchar(15) NOT NULL DEFAULT '',
|
||||||
|
PRIMARY KEY (name)
|
||||||
|
);
|
||||||
|
|
||||||
|
--
|
||||||
|
-- Table with device-configuration
|
||||||
|
--
|
||||||
|
CREATE TABLE sccpline (
|
||||||
|
id varchar(4) DEFAULT NULL,
|
||||||
|
pin varchar(45) DEFAULT NULL,
|
||||||
|
label varchar(45) DEFAULT NULL,
|
||||||
|
description varchar(45) DEFAULT NULL,
|
||||||
|
context varchar(45) DEFAULT NULL,
|
||||||
|
incominglimit varchar(45) DEFAULT NULL,
|
||||||
|
transfer varchar(45) DEFAULT NULL,
|
||||||
|
mailbox varchar(45) DEFAULT NULL,
|
||||||
|
vmnum varchar(45) DEFAULT NULL,
|
||||||
|
cid_name varchar(45) DEFAULT NULL,
|
||||||
|
cid_num varchar(45) DEFAULT NULL,
|
||||||
|
trnsfvm varchar(45) DEFAULT NULL,
|
||||||
|
secondary_dialtone_digits varchar(45) DEFAULT NULL,
|
||||||
|
secondary_dialtone_tone varchar(45) DEFAULT NULL,
|
||||||
|
musicclass varchar(45) DEFAULT NULL,
|
||||||
|
language varchar(45) DEFAULT NULL,
|
||||||
|
accountcode varchar(45) DEFAULT NULL,
|
||||||
|
echocancel varchar(45) DEFAULT NULL,
|
||||||
|
silencesuppression varchar(45) DEFAULT NULL,
|
||||||
|
callgroup varchar(45) DEFAULT NULL,
|
||||||
|
pickupgroup varchar(45) DEFAULT NULL,
|
||||||
|
namedcallgroup varchar(45) DEFAULT NULL,
|
||||||
|
namedpickupgroup varchar(45) DEFAULT NULL,
|
||||||
|
dnd varchar(7) DEFAULT 'reject',
|
||||||
|
amaflags varchar(45) DEFAULT NULL,
|
||||||
|
defaultSubscriptionId_number varchar(5) DEFAULT NULL,
|
||||||
|
setvar varchar(50) DEFAULT NULL,
|
||||||
|
name varchar(45) NOT NULL DEFAULT '',
|
||||||
|
PRIMARY KEY (name)
|
||||||
|
);
|
||||||
|
|
||||||
|
CREATE TABLE buttontype (
|
||||||
|
type varchar(9) DEFAULT NULL,
|
||||||
|
PRIMARY KEY (type)
|
||||||
|
);
|
||||||
|
|
||||||
|
INSERT INTO buttontype (type) VALUES ('line');
|
||||||
|
INSERT INTO buttontype (type) VALUES ('speeddial');
|
||||||
|
INSERT INTO buttontype (type) VALUES ('service');
|
||||||
|
INSERT INTO buttontype (type) VALUES ('feature');
|
||||||
|
INSERT INTO buttontype (type) VALUES ('empty');
|
||||||
|
--
|
||||||
|
-- Table with button-configuration for device
|
||||||
|
--
|
||||||
|
CREATE TABLE buttonconfig (
|
||||||
|
device varchar(15) NOT NULL DEFAULT '',
|
||||||
|
instance tinyint(4) NOT NULL DEFAULT '0',
|
||||||
|
type varchar(9),
|
||||||
|
name varchar(36) DEFAULT NULL,
|
||||||
|
options varchar(100) DEFAULT NULL,
|
||||||
|
PRIMARY KEY (device,instance),
|
||||||
|
FOREIGN KEY (device) REFERENCES sccpdevice (device),
|
||||||
|
FOREIGN KEY (type) REFERENCES buttontype (type)
|
||||||
|
);
|
||||||
|
|
||||||
|
--
|
||||||
|
-- View for merging device and button configuration
|
||||||
|
--
|
||||||
|
CREATE VIEW sccpdeviceconfig AS
|
||||||
|
SELECT sccpdevice.*,
|
||||||
|
group_concat(buttonconfig.type||","||buttonconfig.name||","||buttonconfig.options,";") as button
|
||||||
|
FROM buttonconfig, sccpdevice
|
||||||
|
WHERE buttonconfig.device=sccpdevice.name
|
||||||
|
GROUP BY sccpdevice.name
|
||||||
|
ORDER BY sccpdevice.name, buttonconfig.instance;
|
26
net/chan-sccp-b/patches/01-prevent-extra-optimization.patch
Normal file
26
net/chan-sccp-b/patches/01-prevent-extra-optimization.patch
Normal file
|
@ -0,0 +1,26 @@
|
||||||
|
--- a/autoconf/extra.m4
|
||||||
|
+++ b/autoconf/extra.m4
|
||||||
|
@@ -460,23 +460,8 @@ AC_DEFUN([CS_ENABLE_OPTIMIZATION], [
|
||||||
|
AC_MSG_NOTICE([--enable-optimization: ${enable_optimization}])
|
||||||
|
AC_MSG_NOTICE([--enable-debug: ${enable_debug}])
|
||||||
|
|
||||||
|
- if test -n "${CPPFLAGS_saved}"; then
|
||||||
|
- CPPFLAGS_saved="${CPPFLAGS_saved} -U_FORTIFY_SOURCE"
|
||||||
|
- else
|
||||||
|
- CPPFLAGS_saved="-U_FORTIFY_SOURCE"
|
||||||
|
- fi
|
||||||
|
if test "$enable_optimization" == "no"; then
|
||||||
|
strip_binaries="no"
|
||||||
|
- optimize_flag="-O0"
|
||||||
|
- case "${CC}" in
|
||||||
|
- *gcc*)
|
||||||
|
- AX_CHECK_COMPILE_FLAG(-Og, [
|
||||||
|
- optimize_flag="-Og"
|
||||||
|
- ])
|
||||||
|
- ;;
|
||||||
|
- esac
|
||||||
|
- CFLAGS_saved="${CFLAGS_saved} ${optimize_flag} "
|
||||||
|
- CPPFLAGS_saved="${CPPFLAGS_saved} ${optimize_flag}"
|
||||||
|
else
|
||||||
|
strip_binaries="yes"
|
||||||
|
CFLAGS_saved="${CFLAGS_saved} -O2 "
|
|
@ -136,13 +136,6 @@ menu "Configuration"
|
||||||
help
|
help
|
||||||
Enable this option to allow use of OGG in mod_celt.
|
Enable this option to allow use of OGG in mod_celt.
|
||||||
|
|
||||||
config FS_WITH_CORE_LIBEDIT_SUPPORT
|
|
||||||
bool "Compile with libedit Support"
|
|
||||||
default n
|
|
||||||
help
|
|
||||||
Compile with libedit Support. ATM, libedit isn't
|
|
||||||
supported by OpenWRT.
|
|
||||||
|
|
||||||
config FS_WITH_FHS
|
config FS_WITH_FHS
|
||||||
bool "Follow the FHS when placing files and directories"
|
bool "Follow the FHS when placing files and directories"
|
||||||
default y
|
default y
|
||||||
|
@ -223,7 +216,7 @@ menu "Configuration"
|
||||||
|
|
||||||
config FS_WITH_STUN
|
config FS_WITH_STUN
|
||||||
bool "Enable stun module"
|
bool "Enable stun module"
|
||||||
default n
|
default y
|
||||||
help
|
help
|
||||||
Enable stun module.
|
Enable stun module.
|
||||||
|
|
||||||
|
|
|
@ -6,20 +6,21 @@
|
||||||
#
|
#
|
||||||
#
|
#
|
||||||
include $(TOPDIR)/rules.mk
|
include $(TOPDIR)/rules.mk
|
||||||
|
-include perlmod.mk
|
||||||
|
|
||||||
|
|
||||||
PKG_NAME:=freeswitch
|
PKG_NAME:=freeswitch
|
||||||
PKG_SOURCE_PROTO:=git
|
PKG_SOURCE_PROTO:=git
|
||||||
PKG_DISTNAME:=$(PKG_NAME)_$(PKG_SOURCE_PROTO)
|
PKG_DISTNAME:=$(PKG_NAME)_$(PKG_SOURCE_PROTO)
|
||||||
PKG_VERSION:=1.5.14
|
PKG_VERSION:=1.5.final
|
||||||
|
|
||||||
|
|
||||||
#
|
#
|
||||||
# The latest FS git hash in PKG_SOURCE_VERSION can be obtained from
|
# The latest FS git hash in PKG_SOURCE_VERSION can be obtained from
|
||||||
# http://fisheye.freeswitch.org
|
# http://fisheye.freeswitch.org
|
||||||
#
|
#
|
||||||
FS_WITH_DEFAULT_HEAD:=a4d877c189b331ea47bf3a75745006d4d873eee6
|
FS_WITH_DEFAULT_HEAD:=bff9aab850a911e27b316b016c62f91f657719cd
|
||||||
PKG_SOURCE_URL:=https://stash.$(PKG_NAME).org/scm/fs/$(PKG_NAME).git
|
PKG_SOURCE_URL:=https://$(PKG_NAME).org/stash/scm/fs/$(PKG_NAME).git
|
||||||
PKG_SOURCE_VERSION:=$(if $(CONFIG_FS_WITH_LATEST_HEAD),$(shell git ls-remote $(PKG_SOURCE_URL) HEAD|cut -f1),$(FS_WITH_DEFAULT_HEAD))
|
PKG_SOURCE_VERSION:=$(if $(CONFIG_FS_WITH_LATEST_HEAD),$(shell git ls-remote $(PKG_SOURCE_URL) HEAD|cut -f1),$(FS_WITH_DEFAULT_HEAD))
|
||||||
FS_WITH_DEFAULT_HEAD_SHORT:=$(shell echo $(FS_WITH_DEFAULT_HEAD)|cut -b -7)
|
FS_WITH_DEFAULT_HEAD_SHORT:=$(shell echo $(FS_WITH_DEFAULT_HEAD)|cut -b -7)
|
||||||
PKG_SOURCE_VERSION_SHORT:=$(shell echo $(PKG_SOURCE_VERSION)|cut -b -7)
|
PKG_SOURCE_VERSION_SHORT:=$(shell echo $(PKG_SOURCE_VERSION)|cut -b -7)
|
||||||
|
@ -29,7 +30,10 @@ PKG_SOURCE:=$(PKG_SOURCE_SUBDIR)-$(if $(CONFIG_FS_WITH_LOCAL_SOURCE),$(FS_WITH_D
|
||||||
PKG_BUILD_DIR:=$(BUILD_DIR)/$(PKG_NAME)-$(PKG_VERSION)
|
PKG_BUILD_DIR:=$(BUILD_DIR)/$(PKG_NAME)-$(PKG_VERSION)
|
||||||
|
|
||||||
|
|
||||||
PKG_FIXUP:=libtool autoreconf
|
PATCH_DIR=./patches/$(CONFIG_LIBC)
|
||||||
|
|
||||||
|
|
||||||
|
PKG_FIXUP:=autoreconf
|
||||||
PKG_BUILD_PARALLEL:=0
|
PKG_BUILD_PARALLEL:=0
|
||||||
|
|
||||||
PKG_LICENSE:=MPL-1.1
|
PKG_LICENSE:=MPL-1.1
|
||||||
|
@ -41,7 +45,6 @@ endif
|
||||||
|
|
||||||
|
|
||||||
PKG_BUILD_DEPENDS:= \
|
PKG_BUILD_DEPENDS:= \
|
||||||
FS_WITH_CORE_LIBEDIT_SUPPORT:libedit \
|
|
||||||
FS_WITH_MYSQL:libmysqlclient \
|
FS_WITH_MYSQL:libmysqlclient \
|
||||||
FS_WITH_POSTGRESQL:libpq \
|
FS_WITH_POSTGRESQL:libpq \
|
||||||
FS_WITH_SQLITE3:libsqlite3 \
|
FS_WITH_SQLITE3:libsqlite3 \
|
||||||
|
@ -75,6 +78,7 @@ FS_MOD_AVAILABLE:= \
|
||||||
conference \
|
conference \
|
||||||
console \
|
console \
|
||||||
curl \
|
curl \
|
||||||
|
cv \
|
||||||
dahdi-codec \
|
dahdi-codec \
|
||||||
db \
|
db \
|
||||||
dialplan-asterisk \
|
dialplan-asterisk \
|
||||||
|
@ -105,6 +109,7 @@ FS_MOD_AVAILABLE:= \
|
||||||
h26x \
|
h26x \
|
||||||
h323 \
|
h323 \
|
||||||
hash \
|
hash \
|
||||||
|
hiredis \
|
||||||
html5 \
|
html5 \
|
||||||
httapi \
|
httapi \
|
||||||
http-cache \
|
http-cache \
|
||||||
|
@ -112,6 +117,7 @@ FS_MOD_AVAILABLE:= \
|
||||||
isac \
|
isac \
|
||||||
java \
|
java \
|
||||||
json-cdr \
|
json-cdr \
|
||||||
|
kazoo \
|
||||||
lcr \
|
lcr \
|
||||||
ldap \
|
ldap \
|
||||||
local-stream \
|
local-stream \
|
||||||
|
@ -157,9 +163,9 @@ FS_MOD_AVAILABLE:= \
|
||||||
skel \
|
skel \
|
||||||
skinny \
|
skinny \
|
||||||
skypopen \
|
skypopen \
|
||||||
|
smpp \
|
||||||
sms \
|
sms \
|
||||||
snapshot \
|
snapshot \
|
||||||
snipe-hunt \
|
|
||||||
sndfile \
|
sndfile \
|
||||||
snmp \
|
snmp \
|
||||||
snom \
|
snom \
|
||||||
|
@ -185,7 +191,7 @@ FS_MOD_AVAILABLE:= \
|
||||||
vmd \
|
vmd \
|
||||||
voicemail \
|
voicemail \
|
||||||
voicemail-ivr \
|
voicemail-ivr \
|
||||||
vp8 \
|
vpx \
|
||||||
xml-cdr \
|
xml-cdr \
|
||||||
xml-curl \
|
xml-curl \
|
||||||
xml-ldap \
|
xml-ldap \
|
||||||
|
@ -202,7 +208,6 @@ PKG_CONFIG_DEPENDS:= \
|
||||||
CONFIG_FS_WITH_APR_SCTP \
|
CONFIG_FS_WITH_APR_SCTP \
|
||||||
CONFIG_FS_WITH_APR_THREADS \
|
CONFIG_FS_WITH_APR_THREADS \
|
||||||
CONFIG_FS_WITH_BUILTIN_ZRTP \
|
CONFIG_FS_WITH_BUILTIN_ZRTP \
|
||||||
CONFIG_FS_WITH_CORE_LIBEDIT_SUPPORT \
|
|
||||||
CONFIG_FS_WITH_DEFAULT_HEAD \
|
CONFIG_FS_WITH_DEFAULT_HEAD \
|
||||||
CONFIG_FS_WITH_ERLANG \
|
CONFIG_FS_WITH_ERLANG \
|
||||||
CONFIG_FS_WITH_FHS \
|
CONFIG_FS_WITH_FHS \
|
||||||
|
@ -258,7 +263,7 @@ define Package/$(PKG_NAME)
|
||||||
$(call Package/$(PKG_NAME)/Default)
|
$(call Package/$(PKG_NAME)/Default)
|
||||||
MENU:=1
|
MENU:=1
|
||||||
TITLE:=FreeSWITCH open source telephony platform ($(PKG_SOURCE_VERSION_SHORT))
|
TITLE:=FreeSWITCH open source telephony platform ($(PKG_SOURCE_VERSION_SHORT))
|
||||||
DEPENDS:=+FS_WITH_CORE_LIBEDIT_SUPPORT:libedit +FS_WITH_OPENSSL:libopenssl +libcurl +libdb47 +libgdbm $(ICONV_DEPENDS) $(INTL_DEPENDS) +libjpeg +libncurses +libopenldap +libpcre +libpthread +librt +libspeex +libspeexdsp +FS_WITH_SQLITE3:libsqlite3 +FS_WITH_SRTP:libsrtp +SSP_SUPPORT:libssp +libstdcpp +libuuid +PACKAGE_$(PKG_NAME)-mod-perl:perl
|
DEPENDS:=+FS_WITH_OPENSSL:libopenssl +libcurl +libdb47 +libfreetype +libgdbm $(ICONV_DEPENDS) $(INTL_DEPENDS) +libjpeg +libncurses +libopenldap +libpcre +libpng +libpthread +librt +libspeex +libspeexdsp +FS_WITH_SQLITE3:libsqlite3 +FS_WITH_SRTP:libsrtp +SSP_SUPPORT:libssp +libstdcpp +libuuid +PACKAGE_$(PKG_NAME)-mod-perl:perl +libvpx
|
||||||
endef
|
endef
|
||||||
|
|
||||||
|
|
||||||
|
@ -459,11 +464,6 @@ endef
|
||||||
MAKE_INSTALL_TARGETS:=install
|
MAKE_INSTALL_TARGETS:=install
|
||||||
|
|
||||||
|
|
||||||
ifneq ($(CONFIG_PACKAGE_$(PKG_NAME)-mod-celt),)
|
|
||||||
$(eval $(call Download/files,celt,celt-0.10.0.tar.gz,a656f6176e9be84027c0e51ceedd710f,,downloads/libs/,libs/))
|
|
||||||
endif
|
|
||||||
|
|
||||||
|
|
||||||
ifneq ($(CONFIG_PACKAGE_$(PKG_NAME)-mod-curl),)
|
ifneq ($(CONFIG_PACKAGE_$(PKG_NAME)-mod-curl),)
|
||||||
$(eval $(call Download/files,json-cdr,json-c-0.9.tar.gz,4653b3b9c568bb9c782178abfaac128d,,downloads/libs/,libs/))
|
$(eval $(call Download/files,json-cdr,json-c-0.9.tar.gz,4653b3b9c568bb9c782178abfaac128d,,downloads/libs/,libs/))
|
||||||
endif
|
endif
|
||||||
|
@ -474,26 +474,11 @@ ifneq ($(CONFIG_PACKAGE_$(PKG_NAME)-mod-event-zmq),)
|
||||||
endif
|
endif
|
||||||
|
|
||||||
|
|
||||||
ifneq ($(CONFIG_PACKAGE_$(PKG_NAME)-mod-flite),)
|
|
||||||
$(eval $(call Download/files,flite,flite-2.0.0-release.tar.bz2,645db96ffc296cbb6d37f231cc1cc6b2,,downloads/libs/,libs/))
|
|
||||||
endif
|
|
||||||
|
|
||||||
|
|
||||||
ifneq ($(CONFIG_PACKAGE_$(PKG_NAME)-mod-mongo),)
|
ifneq ($(CONFIG_PACKAGE_$(PKG_NAME)-mod-mongo),)
|
||||||
$(eval $(call Download/files,mongo,mongo-c-driver-0.92.2.tar.gz,afab25a33abd3f1e0ba79c5a9da92651,,downloads/libs/,libs/))
|
$(eval $(call Download/files,mongo,mongo-c-driver-0.92.2.tar.gz,afab25a33abd3f1e0ba79c5a9da92651,,downloads/libs/,libs/))
|
||||||
endif
|
endif
|
||||||
|
|
||||||
|
|
||||||
ifneq ($(CONFIG_PACKAGE_$(PKG_NAME)-mod-opus),)
|
|
||||||
$(eval $(call Download/files,opus,opus-1.1-p2.tar.gz,5da7cb39925bfb7dd60ea2e810f71357,,downloads/libs/,libs/))
|
|
||||||
endif
|
|
||||||
|
|
||||||
|
|
||||||
ifneq ($(CONFIG_PACKAGE_$(PKG_NAME)-mod-ldap)|$(CONFIG_PACKAGE_$(PKG_NAME)-mod-xml-ldap),)
|
|
||||||
$(eval $(call Download/files,ldap,openldap-2.4.19.tar.gz,4a6dab2711fcf141f19bb680bc335887,,downloads/libs/,libs/))
|
|
||||||
endif
|
|
||||||
|
|
||||||
|
|
||||||
ifneq ($(CONFIG_PACKAGE_$(PKG_NAME)-sounds-en-08KHz),)
|
ifneq ($(CONFIG_PACKAGE_$(PKG_NAME)-sounds-en-08KHz),)
|
||||||
$(eval $(call Download/files,sounds-en-08KHz,$(PKG_NAME)-sounds-en-us-callie-8000-1.0.50.tar.gz,14cccba7b5c56f027fea391f1e0ee2d6,,,))
|
$(eval $(call Download/files,sounds-en-08KHz,$(PKG_NAME)-sounds-en-us-callie-8000-1.0.50.tar.gz,14cccba7b5c56f027fea391f1e0ee2d6,,,))
|
||||||
MAKE_INSTALL_TARGETS+= sounds-install
|
MAKE_INSTALL_TARGETS+= sounds-install
|
||||||
|
@ -558,21 +543,24 @@ ifneq ($(CONFIG_USE_EGLIBC),)
|
||||||
endif
|
endif
|
||||||
|
|
||||||
|
|
||||||
FS_TARGET_CFLAGS:= $(TARGET_CFLAGS) -DLUA_USE_LINUX $(FPIC) -std=gnu99 -Wno-format -Wno-unused-variable -Wno-unused-but-set-variable -Wno-implicit-function-declaration
|
ifeq ($(CONFIG_LIBC),musl)
|
||||||
FS_TARGET_CXXFLAGS:= $(TARGET_CXXFLAGS)
|
TARGET_CFLAGS += -D_GNU_SOURCE
|
||||||
FS_TARGET_CPPFLAGS:= -I. -I./lua $(TARGET_CPPFLAGS) $(if $(CONFIG_PACKAGE_$(PKG_NAME)-mod-json-cdr),-Wno-error) -I`ls -d $(PKG_BUILD_DIR)/libs/*|grep tiff`/libtiff -I$(PKG_BUILD_DIR)/libs/spandsp/src
|
endif
|
||||||
|
#FS_TARGET_CFLAGS:= $(TARGET_CFLAGS) -DLUA_USE_LINUX $(FPIC) -std=gnu99 -Wno-format -Wno-unused-variable -Wno-unused-but-set-variable -Wno-implicit-function-declaration
|
||||||
|
#FS_TARGET_CXXFLAGS:= $(TARGET_CXXFLAGS)
|
||||||
|
#FS_TARGET_CPPFLAGS:= -I. -I./lua $(TARGET_CPPFLAGS) $(if $(CONFIG_PACKAGE_$(PKG_NAME)-mod-json-cdr),-Wno-error) -I`ls -d $(PKG_BUILD_DIR)/libs/*|grep tiff`/libtiff -I$(PKG_BUILD_DIR)/libs/spandsp/src
|
||||||
|
|
||||||
|
|
||||||
#MAKE_FLAGS += \
|
#MAKE_FLAGS += \
|
||||||
# OPT_FLAGS+="$(TARGET_CFLAGS)"
|
# OPT_FLAGS+="$(TARGET_CFLAGS)"
|
||||||
|
|
||||||
|
|
||||||
MAKE_VARS += \
|
#MAKE_VARS += \
|
||||||
AR="$(TOOLCHAIN_DIR)/bin/$(TARGET_CROSS)ar" \
|
# AR="$(TOOLCHAIN_DIR)/bin/$(TARGET_CROSS)ar" \
|
||||||
CC="$(TOOLCHAIN_DIR)/bin/$(TARGET_CC)" \
|
# CC="$(TOOLCHAIN_DIR)/bin/$(TARGET_CC)" \
|
||||||
CXX="$(TOOLCHAIN_DIR)/bin/$(TARGET_CXX)" \
|
# CXX="$(TOOLCHAIN_DIR)/bin/$(TARGET_CXX)" \
|
||||||
RANLIB="$(TOOLCHAIN_DIR)/bin/$(TARGET_CROSS)ranlib" \
|
# RANLIB="$(TOOLCHAIN_DIR)/bin/$(TARGET_CROSS)ranlib" \
|
||||||
CC_FOR_BUILD="$(HOSTCC)" \
|
# CC_FOR_BUILD="$(HOSTCC)" \
|
||||||
|
|
||||||
|
|
||||||
CONFIGURE_ARGS+= \
|
CONFIGURE_ARGS+= \
|
||||||
|
@ -582,11 +570,11 @@ CONFIGURE_ARGS+= \
|
||||||
--bindir="/usr/bin" \
|
--bindir="/usr/bin" \
|
||||||
--libdir="/usr/lib" \
|
--libdir="/usr/lib" \
|
||||||
--srcdir="$(PKG_BUILD_DIR)" \
|
--srcdir="$(PKG_BUILD_DIR)" \
|
||||||
--sysconfdir="/etc/$(PKG_NAME)" \
|
--sysconfdir="/etc" \
|
||||||
--with-modinstdir="/usr/lib/$(PKG_NAME)" \
|
--with-modinstdir="/usr/lib/$(PKG_NAME)" \
|
||||||
--with-random="/dev/urandom" \
|
--with-random="/dev/urandom" \
|
||||||
|
--disable-core-libedit-support \
|
||||||
$(call autoconf_bool,CONFIG_FS_WITH_BUILTIN_ZRTP,zrtp) \
|
$(call autoconf_bool,CONFIG_FS_WITH_BUILTIN_ZRTP,zrtp) \
|
||||||
$(call autoconf_bool,CONFIG_FS_WITH_CORE_LIBEDIT_SUPPORT,core-libedit-support) \
|
|
||||||
$(call autoconf_bool,CONFIG_FS_WITH_FHS,fhs) \
|
$(call autoconf_bool,CONFIG_FS_WITH_FHS,fhs) \
|
||||||
$(call autoconf_bool,CONFIG_FS_WITH_APR_IPV6,ipv6) \
|
$(call autoconf_bool,CONFIG_FS_WITH_APR_IPV6,ipv6) \
|
||||||
$(call autoconf_bool,CONFIG_FS_WITH_LZMA,lzma) \
|
$(call autoconf_bool,CONFIG_FS_WITH_LZMA,lzma) \
|
||||||
|
@ -609,7 +597,6 @@ CONFIGURE_ARGS+= \
|
||||||
$(if $(CONFIG_FS_WITH_ODBC),--with-odbc="$(STAGING_DIR)/usr") \
|
$(if $(CONFIG_FS_WITH_ODBC),--with-odbc="$(STAGING_DIR)/usr") \
|
||||||
$(if $(CONFIG_FS_WITH_OGG),--with-ogg="$(STAGING_DIR)/usr") \
|
$(if $(CONFIG_FS_WITH_OGG),--with-ogg="$(STAGING_DIR)/usr") \
|
||||||
$(if $(CONFIG_FS_WITH_OPENSSL),--with-openssl="pkg-config") \
|
$(if $(CONFIG_FS_WITH_OPENSSL),--with-openssl="pkg-config") \
|
||||||
$(if $(CONFIG_PACKAGE_$(PKG_NAME)-mod-celt),--with-ogg="$(STAGING_DIR)/usr",--without-ogg) \
|
|
||||||
$(if $(CONFIG_PACKAGE_$(PKG_NAME)-mod-erlang-event),--with-erlang="$(CONFIG_FS_WITH_ERLANG)",--without-erlang) \
|
$(if $(CONFIG_PACKAGE_$(PKG_NAME)-mod-erlang-event),--with-erlang="$(CONFIG_FS_WITH_ERLANG)",--without-erlang) \
|
||||||
$(if $(CONFIG_PACKAGE_$(PKG_NAME)-mod-java),--with-java="$(STAGING_DIR)/usr",--without-java) \
|
$(if $(CONFIG_PACKAGE_$(PKG_NAME)-mod-java),--with-java="$(STAGING_DIR)/usr",--without-java) \
|
||||||
$(if $(CONFIG_PACKAGE_$(PKG_NAME)-mod-python),--with-python="$(CONFIG_FS_WITH_PYTHON)",--without-python) \
|
$(if $(CONFIG_PACKAGE_$(PKG_NAME)-mod-python),--with-python="$(CONFIG_FS_WITH_PYTHON)",--without-python) \
|
||||||
|
@ -619,49 +606,54 @@ CONFIGURE_ARGS+= \
|
||||||
--with$(if $(CONFIG_FS_WITH_SQLITE3),,out)-sqlite3 \
|
--with$(if $(CONFIG_FS_WITH_SQLITE3),,out)-sqlite3 \
|
||||||
|
|
||||||
|
|
||||||
ifeq ($(ARCH),arm)
|
ifeq ($(CONFIG_TARGET_ARCH_PACKAGES),"kirkwood")
|
||||||
CONFIGURE_ARGS+= --enable-arm5e-asm \
|
CONFIGURE_ARGS+= --enable-arm5e-asm \
|
||||||
|
|
||||||
endif
|
endif
|
||||||
|
|
||||||
|
|
||||||
|
#ifeq ($(CONFIG_LIBC),"uClibc")
|
||||||
|
ifeq ($(CONFIG_ARCH),"mips")
|
||||||
CONFIGURE_VARS+= \
|
CONFIGURE_VARS+= \
|
||||||
config_TARGET_CC="$(TOOLCHAIN_DIR)/bin/$(TARGET_CC)" \
|
|
||||||
config_TARGET_CXX="$(TOOLCHAIN_DIR)/bin/$(TARGET_CXX)" \
|
|
||||||
config_TARGET_CFLAGS="$(FS_TARGET_CPPFLAGS) $(FS_TARGET_CFLAGS)" \
|
|
||||||
config_TARGET_CXXFLAGS="$(FS_TARGET_CPPFLAGS) $(FS_TARGET_CXXFLAGS)" \
|
|
||||||
config_TARGET_CPPFLAGS="$(FS_TARGET_CPPFLAGS)" \
|
|
||||||
config_TARGET_READLINE_INC="$(FS_TARGET_CPPFLAGS)" \
|
|
||||||
config_TARGET_READLINE_LIBS="-lreadline -lncurses" \
|
|
||||||
config_TARGET_LIBS="-lpthread -ldl" \
|
|
||||||
config_BUILD_CC="$(HOSTCC)" \
|
|
||||||
CC_FOR_BUILD="$(HOSTCC)" \
|
|
||||||
BUILDTOOL_CC="$(HOSTCC)" \
|
|
||||||
BUILDTOOL_CCLD="$(HOSTCC)" \
|
|
||||||
CC="$(TOOLCHAIN_DIR)/bin/$(TARGET_CC)" \
|
|
||||||
CXX="$(TOOLCHAIN_DIR)/bin/$(TARGET_CXX)" \
|
|
||||||
AR="$(TOOLCHAIN_DIR)/bin/$(TARGET_CROSS)ar" \
|
|
||||||
RANLIB="$(TOOLCHAIN_DIR)/bin/$(TARGET_CROSS)ranlib" \
|
|
||||||
CFLAGS="$(FS_TARGET_CPPFLAGS) $(FS_TARGET_CFLAGS)" \
|
|
||||||
CXXFLAGS="$(FS_TARGET_CPPFLAGS) $(FS_TARGET_CXXFLAGS)" \
|
|
||||||
CPPFLAGS="$(FS_TARGET_CPPFLAGS)" \
|
|
||||||
LDFLAGS="-L$(STAGING_DIR)/usr/lib/perl5/5.20/CORE -Wl,-rpath-link=\"$(STAGING_DIR)/usr/lib\" -Wl,-rpath-link=\"$(STAGING_DIR)/usr/lib$(if $(CONFIG_PACKAGE_$(PKG_NAME)-mod-perl),/perl5/5.20/CORE)\" -Wl,-rpath,/usr/lib -Wl,-rpath,/usr/lib$(if $(CONFIG_PACKAGE_$(PKG_NAME)-mod-perl),/perl5/5.20/CORE -lperl -lpthread -lnsl -lgdbm -ldb -ldl -lm -lcrypt -lutil -lc)" \
|
|
||||||
HOST_CC="/usr/bin/cc" \
|
|
||||||
HOST_CXX="/usr/bin/g++" \
|
|
||||||
CROSS_COMPILE="1" \
|
|
||||||
$(if $(CONFIG_FS_WITH_APR_SCTP),ac_cv_header_netinet_sctp_h="yes") \
|
|
||||||
ac_cv_file_dbd_apr_dbd_mysql_c="no" \
|
ac_cv_file_dbd_apr_dbd_mysql_c="no" \
|
||||||
|
|
||||||
|
endif
|
||||||
|
#endif
|
||||||
|
|
||||||
|
|
||||||
|
#CONFIGURE_VARS+= \
|
||||||
|
# config_TARGET_CC="$(TOOLCHAIN_DIR)/bin/$(TARGET_CC)" \
|
||||||
|
# config_TARGET_CXX="$(TOOLCHAIN_DIR)/bin/$(TARGET_CXX)" \
|
||||||
|
# config_TARGET_CFLAGS="$(FS_TARGET_CPPFLAGS) $(FS_TARGET_CFLAGS)" \
|
||||||
|
# config_TARGET_CXXFLAGS="$(FS_TARGET_CPPFLAGS) $(FS_TARGET_CXXFLAGS)" \
|
||||||
|
# config_TARGET_CPPFLAGS="$(FS_TARGET_CPPFLAGS)" \
|
||||||
|
# config_TARGET_READLINE_INC="$(FS_TARGET_CPPFLAGS)" \
|
||||||
|
# config_TARGET_READLINE_LIBS="-lreadline -lncurses" \
|
||||||
|
# config_TARGET_LIBS="-lpthread -ldl" \
|
||||||
|
# config_BUILD_CC="$(HOSTCC)" \
|
||||||
|
# CC_FOR_BUILD="$(HOSTCC)" \
|
||||||
|
# BUILDTOOL_CC="$(HOSTCC)" \
|
||||||
|
# BUILDTOOL_CCLD="$(HOSTCC)" \
|
||||||
|
# CC="$(TOOLCHAIN_DIR)/bin/$(TARGET_CC)" \
|
||||||
|
# CXX="$(TOOLCHAIN_DIR)/bin/$(TARGET_CXX)" \
|
||||||
|
# AR="$(TOOLCHAIN_DIR)/bin/$(TARGET_CROSS)ar" \
|
||||||
|
# RANLIB="$(TOOLCHAIN_DIR)/bin/$(TARGET_CROSS)ranlib" \
|
||||||
|
# CFLAGS="$(FS_TARGET_CPPFLAGS) $(FS_TARGET_CFLAGS)" \
|
||||||
|
# CXXFLAGS="$(FS_TARGET_CPPFLAGS) $(FS_TARGET_CXXFLAGS)" \
|
||||||
|
# CPPFLAGS="$(FS_TARGET_CPPFLAGS)" \
|
||||||
|
# LDFLAGS="-L$(STAGING_DIR)/usr/lib/perl5/$(PERL_VERSION)/CORE -Wl,-rpath-link=\"$(STAGING_DIR)/usr/lib\" -Wl,-rpath-link=\"$(STAGING_DIR)/usr/lib$(if $(CONFIG_PACKAGE_$(PKG_NAME)-mod-perl),/perl5/$(PERL_VERSION)/CORE)\" -Wl,-rpath,/usr/lib -Wl,-rpath,/usr/lib$(if $(CONFIG_PACKAGE_$(PKG_NAME)-mod-perl),/perl5/$(PERL_VERSION)/CORE -lperl -lpthread -lnsl -lgdbm -ldb -ldl -lm -lcrypt -lutil -lc)" \
|
||||||
|
# HOST_CC="/usr/bin/cc" \
|
||||||
|
# HOST_CXX="/usr/bin/g++" \
|
||||||
|
# CROSS_COMPILE="1" \
|
||||||
|
# $(if $(CONFIG_FS_WITH_APR_SCTP),ac_cv_header_netinet_sctp_h="yes") \
|
||||||
|
# ac_cv_file_dbd_apr_dbd_mysql_c="no" \
|
||||||
|
|
||||||
|
|
||||||
define Build/Prepare
|
define Build/Prepare
|
||||||
$(call Build/Prepare/Default)
|
$(call Build/Prepare/Default)
|
||||||
$(call Prepare/celt)
|
|
||||||
$(call Prepare/event-zmq)
|
$(call Prepare/event-zmq)
|
||||||
$(call Prepare/flite)
|
|
||||||
$(call Prepare/json-cdr)
|
$(call Prepare/json-cdr)
|
||||||
$(call Prepare/ldap)
|
|
||||||
$(call Prepare/mongo)
|
$(call Prepare/mongo)
|
||||||
$(call Prepare/opus)
|
|
||||||
$(if $(CONFIG_PACKAGE_$(PKG_NAME)-sounds-en-08KHz),$(call Prepare/sounds-en-08KHz))
|
$(if $(CONFIG_PACKAGE_$(PKG_NAME)-sounds-en-08KHz),$(call Prepare/sounds-en-08KHz))
|
||||||
$(if $(CONFIG_PACKAGE_$(PKG_NAME)-sounds-en-16KHz),$(call Prepare/sounds-en-16KHz))
|
$(if $(CONFIG_PACKAGE_$(PKG_NAME)-sounds-en-16KHz),$(call Prepare/sounds-en-16KHz))
|
||||||
$(if $(CONFIG_PACKAGE_$(PKG_NAME)-sounds-en-32KHz),$(call Prepare/sounds-en-32KHz))
|
$(if $(CONFIG_PACKAGE_$(PKG_NAME)-sounds-en-32KHz),$(call Prepare/sounds-en-32KHz))
|
||||||
|
@ -673,12 +665,11 @@ define Build/Prepare
|
||||||
ifeq ($(CONFIG_FS_WITH_LOCAL_SOURCE),y)
|
ifeq ($(CONFIG_FS_WITH_LOCAL_SOURCE),y)
|
||||||
(cd $(PKG_BUILD_DIR); $(if $(CONFIG_FS_WITH_LATEST_HEAD),if $(QUILT_CMD) top > /dev/null 2>&1 && [ -f $(PKG_BUILD_DIR)/patches/series ]; then $(QUILT_CMD) pop -a; fi; git pull;) if $(QUILT_CMD) next > /dev/null 2>&1; then $(QUILT_CMD) push -a; fi)
|
(cd $(PKG_BUILD_DIR); $(if $(CONFIG_FS_WITH_LATEST_HEAD),if $(QUILT_CMD) top > /dev/null 2>&1 && [ -f $(PKG_BUILD_DIR)/patches/series ]; then $(QUILT_CMD) pop -a; fi; git pull;) if $(QUILT_CMD) next > /dev/null 2>&1; then $(QUILT_CMD) push -a; fi)
|
||||||
endif
|
endif
|
||||||
|
(cd $(PKG_BUILD_DIR); $(AM_TOOL_PATHS) ./bootstrap.sh)
|
||||||
endef
|
endef
|
||||||
|
|
||||||
|
|
||||||
define Build/Configure
|
define Build/Configure
|
||||||
(cd $(PKG_BUILD_DIR); $(if $(CONFIG_FS_WITH_LATEST_HEAD),if $(QUILT_CMD) top > /dev/null 2>&1 && [ -f $(PKG_BUILD_DIR)/patches/series ]; then $(QUILT_CMD) pop -a; fi; git pull;) if $(QUILT_CMD) next > /dev/null 2>&1; then $(QUILT_CMD) push -a; fi)
|
|
||||||
(cd $(PKG_BUILD_DIR); $(AM_TOOL_PATHS) ./bootstrap.sh)
|
|
||||||
$(foreach m,$(FS_MOD_AVAILABLE),
|
$(foreach m,$(FS_MOD_AVAILABLE),
|
||||||
$(if $(CONFIG_PACKAGE_$(PKG_NAME)-mod-$(m)),
|
$(if $(CONFIG_PACKAGE_$(PKG_NAME)-mod-$(m)),
|
||||||
$(SED) 's|^[ #]*\([^#]*/mod_$(subst -,_,$(m))\)$$$$|\1|g' $(PKG_BUILD_DIR)/modules.conf
|
$(SED) 's|^[ #]*\([^#]*/mod_$(subst -,_,$(m))\)$$$$|\1|g' $(PKG_BUILD_DIR)/modules.conf
|
||||||
|
@ -700,14 +691,6 @@ define Build/Compile
|
||||||
endef
|
endef
|
||||||
|
|
||||||
|
|
||||||
define Build/InstallDev
|
|
||||||
$(INSTALL_DIR) $(1)/usr/include
|
|
||||||
$(INSTALL_DIR) $(1)/usr/lib
|
|
||||||
$(CP) $(PKG_INSTALL_DIR)/usr/include $(1)/usr
|
|
||||||
$(CP) $(PKG_INSTALL_DIR)/usr/lib/lib$(PKG_NAME).{a,so*} $(1)/usr/lib/
|
|
||||||
endef
|
|
||||||
|
|
||||||
|
|
||||||
define Package/$(PKG_NAME)/install
|
define Package/$(PKG_NAME)/install
|
||||||
$(INSTALL_DIR) $(1)/etc/config
|
$(INSTALL_DIR) $(1)/etc/config
|
||||||
$(INSTALL_DIR) $(1)/etc/default
|
$(INSTALL_DIR) $(1)/etc/default
|
||||||
|
@ -716,7 +699,6 @@ define Package/$(PKG_NAME)/install
|
||||||
$(INSTALL_DIR) $(1)/etc/hotplug.d/iface
|
$(INSTALL_DIR) $(1)/etc/hotplug.d/iface
|
||||||
$(INSTALL_DIR) $(1)/etc/init.d
|
$(INSTALL_DIR) $(1)/etc/init.d
|
||||||
$(INSTALL_DIR) $(1)/usr/bin
|
$(INSTALL_DIR) $(1)/usr/bin
|
||||||
$(INSTALL_DIR) $(1)/usr/include
|
|
||||||
$(INSTALL_DIR) $(1)/usr/lib
|
$(INSTALL_DIR) $(1)/usr/lib
|
||||||
$(INSTALL_DIR) $(1)/usr/lib/pkgconfig
|
$(INSTALL_DIR) $(1)/usr/lib/pkgconfig
|
||||||
$(INSTALL_BIN) ./files/$(PKG_NAME).init $(1)/etc/init.d/$(PKG_NAME)
|
$(INSTALL_BIN) ./files/$(PKG_NAME).init $(1)/etc/init.d/$(PKG_NAME)
|
||||||
|
@ -724,7 +706,6 @@ define Package/$(PKG_NAME)/install
|
||||||
$(INSTALL_DATA) ./files/$(PKG_NAME).default $(1)/etc/default/$(PKG_NAME)
|
$(INSTALL_DATA) ./files/$(PKG_NAME).default $(1)/etc/default/$(PKG_NAME)
|
||||||
$(INSTALL_DATA) ./files/$(PKG_NAME).hotplug $(1)/etc/hotplug.d/iface/90-$(PKG_NAME)
|
$(INSTALL_DATA) ./files/$(PKG_NAME).hotplug $(1)/etc/hotplug.d/iface/90-$(PKG_NAME)
|
||||||
$(CP) $(PKG_INSTALL_DIR)/usr/bin/$(PKG_NAME) $(1)/usr/bin/
|
$(CP) $(PKG_INSTALL_DIR)/usr/bin/$(PKG_NAME) $(1)/usr/bin/
|
||||||
$(CP) $(PKG_INSTALL_DIR)/usr/include $(1)/usr/
|
|
||||||
$(CP) $(PKG_INSTALL_DIR)/usr/lib/lib$(PKG_NAME)* $(1)/usr/lib/
|
$(CP) $(PKG_INSTALL_DIR)/usr/lib/lib$(PKG_NAME)* $(1)/usr/lib/
|
||||||
$(CP) $(PKG_INSTALL_DIR)/usr/lib/pkgconfig/$(PKG_NAME).pc $(1)/usr/lib/pkgconfig/
|
$(CP) $(PKG_INSTALL_DIR)/usr/lib/pkgconfig/$(PKG_NAME).pc $(1)/usr/lib/pkgconfig/
|
||||||
$(if $(1)/usr/lib/lib$(PKG_NAME).la,$(STAGING_DIR_HOST)/bin/sed -i -re 's|$(STAGING_DIR)||g;s|$(TOOLCHAIN_DIR)||g;s|$(TARGET_CROSS)|usr|g;s|$(REAL_GNU_TARGET_NAME)|usr|g;s|-L$(PKG_BUILD_DIR)(.*)libzrtp ||g;:a;s|((-[IL]/\S+\s).*)\2|\1|;ta' $(1)/usr/lib/lib$(PKG_NAME).la)
|
$(if $(1)/usr/lib/lib$(PKG_NAME).la,$(STAGING_DIR_HOST)/bin/sed -i -re 's|$(STAGING_DIR)||g;s|$(TOOLCHAIN_DIR)||g;s|$(TARGET_CROSS)|usr|g;s|$(REAL_GNU_TARGET_NAME)|usr|g;s|-L$(PKG_BUILD_DIR)(.*)libzrtp ||g;:a;s|((-[IL]/\S+\s).*)\2|\1|;ta' $(1)/usr/lib/lib$(PKG_NAME).la)
|
||||||
|
@ -976,7 +957,7 @@ $(eval $(call BuildPlugin,avmd,Advanced Voice Mail Detection,vanilla,,,,))
|
||||||
$(eval $(call BuildPlugin,basic,BASIC,vanilla,,,,))
|
$(eval $(call BuildPlugin,basic,BASIC,vanilla,,,,))
|
||||||
$(eval $(call BuildPlugin,bert,Naive Bit Error Rate Tester,vanilla,,,,))
|
$(eval $(call BuildPlugin,bert,Naive Bit Error Rate Tester,vanilla,,,,))
|
||||||
$(eval $(call BuildPlugin,blacklist,Blacklist,vanilla,,,,))
|
$(eval $(call BuildPlugin,blacklist,Blacklist,vanilla,,,,))
|
||||||
$(eval $(call BuildPlugin,bv,BroadVoice 16/32-bit Audio Codec,vanilla,,,,))
|
$(eval $(call BuildPlugin,bv,BroadVoice 16/32-bit Audio Codec,vanilla,,,,@BROKEN)) # Requires unsupported libbroadvoice
|
||||||
$(eval $(call BuildPlugin,callcenter,Call Center,vanilla,,,,))
|
$(eval $(call BuildPlugin,callcenter,Call Center,vanilla,,,,))
|
||||||
$(eval $(call BuildPlugin,cdr-csv,CSV-CDR Handler,mod,,,,)) # ~/conf
|
$(eval $(call BuildPlugin,cdr-csv,CSV-CDR Handler,mod,,,,)) # ~/conf
|
||||||
$(eval $(call BuildPlugin,cdr-mongodb,MongoDB CDR logger,vanilla,,,,))
|
$(eval $(call BuildPlugin,cdr-mongodb,MongoDB CDR logger,vanilla,,,,))
|
||||||
|
@ -986,11 +967,12 @@ $(eval $(call BuildPlugin,celt,CELT Ultra-Low Delay Codec,vanilla,,,,+libogg))
|
||||||
$(eval $(call BuildPlugin,cepstral,Cepstral Interface,vanilla,,,,@BROKEN)) # needs <swift.h>
|
$(eval $(call BuildPlugin,cepstral,Cepstral Interface,vanilla,,,,@BROKEN)) # needs <swift.h>
|
||||||
$(eval $(call BuildPlugin,cidlookup,Data Query For CID->NAME Services,mod,,,,+libcurl)) # ~/conf
|
$(eval $(call BuildPlugin,cidlookup,Data Query For CID->NAME Services,mod,,,,+libcurl)) # ~/conf
|
||||||
$(eval $(call BuildPlugin,cluechoo,Framework Demo,vanilla,,,,))
|
$(eval $(call BuildPlugin,cluechoo,Framework Demo,vanilla,,,,))
|
||||||
$(eval $(call BuildPlugin,codec2,CoDec 2,,,,,))
|
$(eval $(call BuildPlugin,codec2,CoDec 2,,,,,@BROKEN)) # Requires unsupported libcodec2
|
||||||
$(eval $(call BuildPlugin,commands,API Commands,vanilla,,,,))
|
$(eval $(call BuildPlugin,commands,API Commands,vanilla,,,,))
|
||||||
$(eval $(call BuildPlugin,conference,Conference Room,vanilla,,,,))
|
$(eval $(call BuildPlugin,conference,Conference Room,vanilla,,,,))
|
||||||
$(eval $(call BuildPlugin,console,Console Logger,vanilla,,,,))
|
$(eval $(call BuildPlugin,console,Console Logger,vanilla,,,,))
|
||||||
$(eval $(call BuildPlugin,curl,HTTP Request,vanilla,,,,+libcurl))
|
$(eval $(call BuildPlugin,curl,HTTP Request,vanilla,,,,+libcurl))
|
||||||
|
$(eval $(call BuildPlugin,cv,Detect Video motion,vanilla,,,,@BROKEN))
|
||||||
$(eval $(call BuildPlugin,dahdi-codec,DAHDI Codecs,vanilla,,,,))
|
$(eval $(call BuildPlugin,dahdi-codec,DAHDI Codecs,vanilla,,,,))
|
||||||
$(eval $(call BuildPlugin,db,Database Backend,vanilla,,,,+libdb47))
|
$(eval $(call BuildPlugin,db,Database Backend,vanilla,,,,+libdb47))
|
||||||
$(eval $(call BuildPlugin,dialplan-asterisk,Asterisk Dialplan Parser,vanilla,,,,))
|
$(eval $(call BuildPlugin,dialplan-asterisk,Asterisk Dialplan Parser,vanilla,,,,))
|
||||||
|
@ -1001,7 +983,7 @@ $(eval $(call BuildPlugin,directory,Search By Name Directory IVR,vanilla,,,,))
|
||||||
$(eval $(call BuildPlugin,distributor,Simple Robin-Round Load,vanilla,,,,))
|
$(eval $(call BuildPlugin,distributor,Simple Robin-Round Load,vanilla,,,,))
|
||||||
$(eval $(call BuildPlugin,dptools,Dialplan Tools,vanilla,,,,))
|
$(eval $(call BuildPlugin,dptools,Dialplan Tools,vanilla,,,,))
|
||||||
$(eval $(call BuildPlugin,easyroute,Simple DID Routing,vanilla,,,,))
|
$(eval $(call BuildPlugin,easyroute,Simple DID Routing,vanilla,,,,))
|
||||||
$(eval $(call BuildPlugin,enum,ENUM Routing,,,,,+libldns @BROKEN))
|
$(eval $(call BuildPlugin,enum,ENUM Routing,,,,,+libldns))
|
||||||
$(eval $(call BuildPlugin,erlang-event,Erlang Event Handler,vanilla,,,,+erlang))
|
$(eval $(call BuildPlugin,erlang-event,Erlang Event Handler,vanilla,,,,+erlang))
|
||||||
$(eval $(call BuildPlugin,esf,Extra SIP Functionality,vanilla,,,,))
|
$(eval $(call BuildPlugin,esf,Extra SIP Functionality,vanilla,,,,))
|
||||||
$(eval $(call BuildPlugin,event-multicast,Multicast Event Handler,vanilla,,,,))
|
$(eval $(call BuildPlugin,event-multicast,Multicast Event Handler,vanilla,,,,))
|
||||||
|
@ -1010,29 +992,31 @@ $(eval $(call BuildPlugin,event-zmq,Socket Event Handler By Zero MQ,vanilla,,,,+
|
||||||
$(eval $(call BuildPlugin,expr,Expression Evaluation,vanilla,,,,))
|
$(eval $(call BuildPlugin,expr,Expression Evaluation,vanilla,,,,))
|
||||||
$(eval $(call BuildPlugin,fifo,FIFO,vanilla,,,,))
|
$(eval $(call BuildPlugin,fifo,FIFO,vanilla,,,,))
|
||||||
$(eval $(call BuildPlugin,file-string,Streaming Multiple Sound Files Sequentially,vanilla,,,,@OBSOLETE)) # merged into dptools
|
$(eval $(call BuildPlugin,file-string,Streaming Multiple Sound Files Sequentially,vanilla,,,,@OBSOLETE)) # merged into dptools
|
||||||
$(eval $(call BuildPlugin,flite,Festival TTS,vanilla,,,,@(!(armeb||avr32)||BROKEN)))
|
$(eval $(call BuildPlugin,flite,Festival TTS,vanilla,,,,+flite @(!(armeb||avr32)||BROKEN))) # flite is from old package repo
|
||||||
$(eval $(call BuildPlugin,format-cdr,XML CDR Module to files or curl,vanilla,,,,))
|
$(eval $(call BuildPlugin,format-cdr,XML CDR Module to files or curl,vanilla,,,,))
|
||||||
$(eval $(call BuildPlugin,fsk,Bell-202 1200-Baud FSK Decoder,vanilla,,,,))
|
$(eval $(call BuildPlugin,fsk,Bell-202 1200-Baud FSK Decoder,vanilla,,,,))
|
||||||
$(eval $(call BuildPlugin,fsv,Video Player / Recorder,vanilla,,,,))
|
$(eval $(call BuildPlugin,fsv,Video Player / Recorder,vanilla,,,,+libyuv @BROKEN)) # Requires unsupported libyuv.
|
||||||
$(eval $(call BuildPlugin,g723-1,G.723.1 Codec,vanilla,,,,))
|
$(eval $(call BuildPlugin,g723-1,G.723.1 Codec,vanilla,,,,))
|
||||||
$(eval $(call BuildPlugin,g729,G.729 Codec,vanilla,,,,))
|
$(eval $(call BuildPlugin,g729,G.729 Codec,vanilla,,,,))
|
||||||
$(eval $(call BuildPlugin,gsmopen,GSM Modem compatible Endpoint,mod,,,alsa,+FS_WITH_ALSA:alsa-lib +FS_WITH_LZMA:liblzma @FS_WITH_ALSA @BROKEN)) # needs gsmlib
|
$(eval $(call BuildPlugin,gsmopen,GSM Modem compatible Endpoint,mod,,,alsa,+FS_WITH_ALSA:alsa-lib +FS_WITH_LZMA:liblzma @FS_WITH_ALSA @BROKEN)) # needs gsmlib
|
||||||
$(eval $(call BuildPlugin,h26x,H26X Linear Codec,vanilla,,,,))
|
$(eval $(call BuildPlugin,h26x,H26X Linear Codec,vanilla,,,,))
|
||||||
$(eval $(call BuildPlugin,h323,H323 Endpoint,mod,,,,@BROKEN)) # Req. H323Plus v1.24.x or newer
|
$(eval $(call BuildPlugin,h323,H323 Endpoint,mod,,,,@BROKEN)) # Req. H323Plus v1.24.x or newer
|
||||||
$(eval $(call BuildPlugin,hash,API For Manipulating A Hash Table,vanilla,,,,))
|
$(eval $(call BuildPlugin,hash,API For Manipulating A Hash Table,vanilla,,,,))
|
||||||
|
$(eval $(call BuildPlugin,hiredis,Redis DB access,vanilla,,,,+hiredis @BROKEN))
|
||||||
#$(eval $(call BuildPlugin,html5,HTML5 Endpoint Module,vanilla,,,,)) # defunct?
|
#$(eval $(call BuildPlugin,html5,HTML5 Endpoint Module,vanilla,,,,)) # defunct?
|
||||||
$(eval $(call BuildPlugin,httapi,HT Telephony API and HTTP Caching,mod,,,,)) # ~/conf
|
$(eval $(call BuildPlugin,httapi,HT Telephony API and HTTP Caching,mod,,,,)) # ~/conf
|
||||||
$(eval $(call BuildPlugin,http-cache,HTTP GET With Caching,mod,,,,+libcurl)) # ~/conf
|
$(eval $(call BuildPlugin,http-cache,HTTP GET With Caching,mod,,,,+libcurl)) # ~/conf
|
||||||
$(eval $(call BuildPlugin,ilbc,ILBC Codec,vanilla,,,,))
|
$(eval $(call BuildPlugin,ilbc,ILBC Codec,vanilla,,,,+libilbc @BROKEN)) # Requires unsupported libilbc.
|
||||||
$(eval $(call BuildPlugin,isac,iSAC Codec,vanilla,,,,))
|
$(eval $(call BuildPlugin,isac,iSAC Codec,vanilla,,,,))
|
||||||
$(eval $(call BuildPlugin,java,Java Language Interface,vanilla,,,,@BROKEN)) # needs java
|
$(eval $(call BuildPlugin,java,Java Language Interface,vanilla,,,,@BROKEN)) # needs java
|
||||||
$(eval $(call BuildPlugin,json-cdr,JSon-CDR Interface,mod,,,,+libcurl))
|
$(eval $(call BuildPlugin,json-cdr,JSon-CDR Interface,mod,,,,+libcurl))
|
||||||
|
$(eval $(call BuildPlugin,kazoo,Socket Controlled Event Handler,vanilla,,,,+erlang))
|
||||||
$(eval $(call BuildPlugin,ldap,LDAP interface,vanilla,,,,+libopenldap))
|
$(eval $(call BuildPlugin,ldap,LDAP interface,vanilla,,,,+libopenldap))
|
||||||
$(eval $(call BuildPlugin,lcr,Least Cost Routing,vanilla,,,,))
|
$(eval $(call BuildPlugin,lcr,Least Cost Routing,vanilla,,,,))
|
||||||
$(eval $(call BuildPlugin,local-stream,Multi-Channel On Same Stream,vanilla,,,,))
|
$(eval $(call BuildPlugin,local-stream,Multi-Channel On Same Stream,vanilla,,,,))
|
||||||
$(eval $(call BuildPlugin,logfile,File Logger,vanilla,,,,))
|
$(eval $(call BuildPlugin,logfile,File Logger,vanilla,,,,))
|
||||||
$(eval $(call BuildPlugin,loopback,Loopback to Dialplan Endpoint,vanilla,,,,))
|
$(eval $(call BuildPlugin,loopback,Loopback to Dialplan Endpoint,vanilla,,,,))
|
||||||
$(eval $(call BuildPlugin,lua,LUA Language Interface,vanilla,,,,))
|
$(eval $(call BuildPlugin,lua,LUA Language Interface,vanilla,,,,+liblua))
|
||||||
$(eval $(call BuildPlugin,managed,Media Switching Software Library,vanilla,,,,+glib2 @BROKEN)) # needs Mono
|
$(eval $(call BuildPlugin,managed,Media Switching Software Library,vanilla,,,,+glib2 @BROKEN)) # needs Mono
|
||||||
$(eval $(call BuildPlugin,memcache,MemCached Interface,vanilla,,,,+libmemcached @BROKEN)) # Req host libmemcached
|
$(eval $(call BuildPlugin,memcache,MemCached Interface,vanilla,,,,+libmemcached @BROKEN)) # Req host libmemcached
|
||||||
$(eval $(call BuildPlugin,mongo,A Document-Oriented Database,vanilla,,,,@BROKEN))
|
$(eval $(call BuildPlugin,mongo,A Document-Oriented Database,vanilla,,,,@BROKEN))
|
||||||
|
@ -1040,16 +1024,16 @@ $(eval $(call BuildPlugin,mp4,MP4 File Format Support For Video,vanilla,,,,@BROK
|
||||||
$(eval $(call BuildPlugin,mp4v,MP4 CoDec Support For Video,vanilla,,,,))
|
$(eval $(call BuildPlugin,mp4v,MP4 CoDec Support For Video,vanilla,,,,))
|
||||||
$(eval $(call BuildPlugin,native-file,WAV Format Sound Player,vanilla,,,,))
|
$(eval $(call BuildPlugin,native-file,WAV Format Sound Player,vanilla,,,,))
|
||||||
$(eval $(call BuildPlugin,nibblebill,Credit / Debit Billing,vanilla,,,,))
|
$(eval $(call BuildPlugin,nibblebill,Credit / Debit Billing,vanilla,,,,))
|
||||||
$(eval $(call BuildPlugin,opus,Opus CoDec,vanilla,,,,))
|
$(eval $(call BuildPlugin,opus,Opus CoDec,vanilla,,,,+libopus))
|
||||||
$(eval $(call BuildPlugin,oreka,Media Recording with Oreka,vanilla,,,,))
|
$(eval $(call BuildPlugin,oreka,Media Recording with Oreka,vanilla,,,,))
|
||||||
$(eval $(call BuildPlugin,perl,Perl Language Interface,vanilla,,lib/perl5/5.20/$(PKG_NAME).la lib/perl5/5.20/$(PKG_NAME).pm lib/perl5/5.20/$(PKG_NAME).so,,+perl +libdb47 +libgdbm @ROKEN))
|
$(eval $(call BuildPlugin,perl,Perl Language Interface,vanilla,,lib/perl5/$(PERL_VERSION)/$(PKG_NAME).la lib/perl5/$(PERL_VERSION)/$(PKG_NAME).pm lib/perl5/$(PERL_VERSION)/$(PKG_NAME).so,,+perl +libdb47 +libgdbm @BROKEN))
|
||||||
$(eval $(call BuildPlugin,portaudio,Portaudio To Sound Card Interface,vanilla,,,alsa,+FS_WITH_ALSA:alsa-lib @FS_WITH_ALSA @BROKEN)) # needs portaudio
|
$(eval $(call BuildPlugin,portaudio,Portaudio To Sound Card Interface,vanilla,,,alsa,+FS_WITH_ALSA:alsa-lib @FS_WITH_ALSA @BROKEN)) # needs portaudio
|
||||||
$(eval $(call BuildPlugin,portaudio-stream,Portaudio Streaming Interface,vanilla,,,alsa,+FS_WITH_ALSA:alsa-lib @FS_WITH_ALSA @BROKEN)) # needs portaudio
|
$(eval $(call BuildPlugin,portaudio-stream,Portaudio Streaming Interface,vanilla,,,alsa,+FS_WITH_ALSA:alsa-lib @FS_WITH_ALSA @BROKEN)) # needs portaudio
|
||||||
$(eval $(call BuildPlugin,posix-timer,POSIX Compliant Soft Timer,vanilla,,,,))
|
$(eval $(call BuildPlugin,posix-timer,POSIX Compliant Soft Timer,vanilla,,,,))
|
||||||
$(eval $(call BuildPlugin,python,Python Language Interface,vanilla,,,,python @BROKEN))
|
$(eval $(call BuildPlugin,python,Python Language Interface,vanilla,,,,python @BROKEN))
|
||||||
$(eval $(call BuildPlugin,radius-cdr,Radius-CDR interface,vanilla,,,,@BROKEN)) # fails in freeradius-client
|
$(eval $(call BuildPlugin,radius-cdr,Radius-CDR interface,vanilla,,,,@BROKEN)) # fails in freeradius-client
|
||||||
$(eval $(call BuildPlugin,rayo,Rayo server & node implementation,vanilla,,,,))
|
$(eval $(call BuildPlugin,rayo,Rayo server & node implementation,vanilla,,,,))
|
||||||
$(eval $(call BuildPlugin,redis,Redis Limited Backend,vanilla,,,,))
|
$(eval $(call BuildPlugin,redis,Redis limit backend,vanilla,,,,))
|
||||||
$(eval $(call BuildPlugin,rss,RRS Feeds via TTS,vanilla,,,,))
|
$(eval $(call BuildPlugin,rss,RRS Feeds via TTS,vanilla,,,,))
|
||||||
$(eval $(call BuildPlugin,rtc,RTC endpoint,vanilla,,,,))
|
$(eval $(call BuildPlugin,rtc,RTC endpoint,vanilla,,,,))
|
||||||
$(eval $(call BuildPlugin,rtmp,RTMP Protocol Handler,vanilla,,,,))
|
$(eval $(call BuildPlugin,rtmp,RTMP Protocol Handler,vanilla,,,,))
|
||||||
|
@ -1067,15 +1051,15 @@ $(eval $(call BuildPlugin,say-ru,Russian Say,vanilla,,,,))
|
||||||
$(eval $(call BuildPlugin,say-th,Thai Say,vanilla,,,,))
|
$(eval $(call BuildPlugin,say-th,Thai Say,vanilla,,,,))
|
||||||
$(eval $(call BuildPlugin,say-zh,Chineese Say,vanilla,,,,))
|
$(eval $(call BuildPlugin,say-zh,Chineese Say,vanilla,,,,))
|
||||||
$(eval $(call BuildPlugin,shell-stream,Streaming Audio Through CLI,vanilla,,,,))
|
$(eval $(call BuildPlugin,shell-stream,Streaming Audio Through CLI,vanilla,,,,))
|
||||||
$(eval $(call BuildPlugin,silk,Skype(TM) SILK Codec Module,vanilla,,,,))
|
$(eval $(call BuildPlugin,silk,Skype(TM) SILK Codec Module,vanilla,,,,+libsilk @BROKEN)) # Requires unsupported libsilk
|
||||||
$(eval $(call BuildPlugin,siren,G.722.1 Codec,vanilla,,,,))
|
$(eval $(call BuildPlugin,siren,G.722.1 Codec,vanilla,,,,+libg7221 @BROKEN)) # Requires unsupported libg7221
|
||||||
$(eval $(call BuildPlugin,skel,Template For New Module,vanilla,,,,))
|
$(eval $(call BuildPlugin,skel,Template For New Module,vanilla,,,,))
|
||||||
$(eval $(call BuildPlugin,skinny,Skinny Call Control Protocol (SCCP),vanilla,,,,))
|
$(eval $(call BuildPlugin,skinny,Skinny Call Control Protocol (SCCP),vanilla,,,,))
|
||||||
$(eval $(call BuildPlugin,skypopen,Skype Compatible Endpoint,mod,,,,@FEATURE_drawing-backend_libX11))
|
$(eval $(call BuildPlugin,skypopen,Skype Compatible Endpoint,mod,,,,@FEATURE_drawing-backend_libX11))
|
||||||
$(eval $(call BuildPlugin,sms,SMS,vanilla,,,,))
|
$(eval $(call BuildPlugin,sms,SMS,vanilla,,,,))
|
||||||
|
$(eval $(call BuildPlugin,smpp,smpp client and server implementation,vanilla,,,,@BROKEN))
|
||||||
$(eval $(call BuildPlugin,snapshot,Record Audio Snapshot to File,vanilla,,,,))
|
$(eval $(call BuildPlugin,snapshot,Record Audio Snapshot to File,vanilla,,,,))
|
||||||
$(eval $(call BuildPlugin,sndfile,Multi-Format Sound File,vanilla,,,,))
|
$(eval $(call BuildPlugin,sndfile,Multi-Format Sound File,vanilla,,,,+libsndfile))
|
||||||
$(eval $(call BuildPlugin,snipe-hunt,Snipe Hunt (Simple Example Module),vanilla,,,,))
|
|
||||||
$(eval $(call BuildPlugin,snmp,SNMP AgentX Subagent,vanilla,,,,+libnetsnmp))
|
$(eval $(call BuildPlugin,snmp,SNMP AgentX Subagent,vanilla,,,,+libnetsnmp))
|
||||||
$(eval $(call BuildPlugin,snom,SNOM specific features,vanilla,,,,))
|
$(eval $(call BuildPlugin,snom,SNOM specific features,vanilla,,,,))
|
||||||
$(eval $(call BuildPlugin,sofia,SOFIA SIP,mod,,,,)) # ~/conf
|
$(eval $(call BuildPlugin,sofia,SOFIA SIP,mod,,,,)) # ~/conf
|
||||||
|
@ -1096,15 +1080,15 @@ $(eval $(call BuildPlugin,tone-stream,Tone Generation Stream,vanilla,,,,))
|
||||||
$(eval $(call BuildPlugin,tts-commandline,ASR TTS Command Interface,vanilla,,,,))
|
$(eval $(call BuildPlugin,tts-commandline,ASR TTS Command Interface,vanilla,,,,))
|
||||||
$(eval $(call BuildPlugin,unimrcp,UniMRCP (MRCP Client),vanilla,,,,@BROKEN))
|
$(eval $(call BuildPlugin,unimrcp,UniMRCP (MRCP Client),vanilla,,,,@BROKEN))
|
||||||
$(eval $(call BuildPlugin,valet-parking,Valet Parking Application,vanilla,,,,))
|
$(eval $(call BuildPlugin,valet-parking,Valet Parking Application,vanilla,,,,))
|
||||||
$(eval $(call BuildPlugin,verto,HTML5 Verto interface,vanilla,,lib/perl5/5.20/MCAST.so lib/perl5/5.20/MCAST.la lib/perl5/5.20/MCAST.pm,perl rtc,@BROKEN))
|
$(eval $(call BuildPlugin,verto,HTML5 Verto interface,vanilla,,lib/perl5/$(PERL_VERSION)/MCAST.so lib/perl5/$(PERL_VERSION)/MCAST.la lib/perl5/$(PERL_VERSION)/MCAST.pm,perl rtc,+perl @BROKEN))
|
||||||
$(eval $(call BuildPlugin,vmd,VoiceMail Beep Detection,vanilla,,,,))
|
$(eval $(call BuildPlugin,vmd,VoiceMail Beep Detection,vanilla,,,,))
|
||||||
$(eval $(call BuildPlugin,voicemail,VoiceMail,vanilla,,,,))
|
$(eval $(call BuildPlugin,voicemail,VoiceMail,vanilla,,,,))
|
||||||
$(eval $(call BuildPlugin,voicemail-ivr,VoiceMail IVR,vanilla,,,,))
|
$(eval $(call BuildPlugin,voicemail-ivr,VoiceMail IVR,vanilla,,,,))
|
||||||
$(eval $(call BuildPlugin,vp8,VP8 Video Codec,vanilla,,,,))
|
$(eval $(call BuildPlugin,vpx,VP8/9 Video Codec with transcoding,vanilla,,,,+libvpx))
|
||||||
$(eval $(call BuildPlugin,xml-cdr,XML-CDR Handler,vanilla,,,,+libcurl))
|
$(eval $(call BuildPlugin,xml-cdr,XML-CDR Handler,vanilla,,,,+libcurl))
|
||||||
$(eval $(call BuildPlugin,xml-curl,XML-Curl Gateway,vanilla,,,,+libcurl))
|
$(eval $(call BuildPlugin,xml-curl,XML-Curl Gateway,vanilla,,,,+libcurl))
|
||||||
$(eval $(call BuildPlugin,xml-ldap,LDAP-XML Gateway,vanilla,,,,+PACKAGE_$(PKG_NAME)-mod-ldap:libopenldap))
|
$(eval $(call BuildPlugin,xml-ldap,LDAP-XML Gateway,vanilla,,,,+PACKAGE_$(PKG_NAME)-mod-ldap:libopenldap))
|
||||||
$(eval $(call BuildPlugin,xml-rpc,XML-RPC Interface,vanilla,,,,))
|
$(eval $(call BuildPlugin,xml-rpc,XML-RPC Interface,vanilla,,,,))
|
||||||
$(eval $(call BuildPlugin,xml-radius,Radius authentication and authorization,vanilla,,,,+freeradius-client @BROKEN)) # freeradius-client isn't yet supported by OpenWRT.
|
$(eval $(call BuildPlugin,xml-radius,Radius authentication and authorization,vanilla,,,,+freeradius-client @BROKEN)) # freeradius-client isn't yet supported by OpenWRT.
|
||||||
$(eval $(call BuildPlugin,xml-scgi,SCGI XML Gateway,vanilla,,,,))
|
$(eval $(call BuildPlugin,xml-scgi,SCGI XML Gateway,vanilla,,,,))
|
||||||
$(eval $(call BuildPlugin,yaml,YAML language,vanilla,,,,+libyaml @BROKEN))
|
$(eval $(call BuildPlugin,yaml,YAML language,vanilla,,,,+libyaml))
|
||||||
|
|
|
@ -1,57 +0,0 @@
|
||||||
--- a/Makefile.am
|
|
||||||
+++ b/Makefile.am
|
|
||||||
@@ -1,3 +1,7 @@
|
|
||||||
+BASE=.
|
|
||||||
+
|
|
||||||
+include $(BASE)/build/openwrt_rules.mk
|
|
||||||
+
|
|
||||||
EXTRA_DIST =
|
|
||||||
SUBDIRS = . src build
|
|
||||||
AUTOMAKE_OPTIONS = foreign subdir-objects
|
|
||||||
@@ -172,7 +176,6 @@ ZRTP_LIBS = -lbn -lzrtp
|
|
||||||
libfreeswitch_la_LDFLAGS += $(ZRTP_LDFLAGS)
|
|
||||||
libfreeswitch_la_LIBADD += $(ZRTP_LIBS)
|
|
||||||
CORE_LIBS += libs/libzrtp/libzrtp.a
|
|
||||||
-LIBS += libs/libzrtp/third_party/bnlib/libbn.a
|
|
||||||
endif
|
|
||||||
|
|
||||||
library_includedir = $(includedir)
|
|
||||||
@@ -311,7 +314,7 @@ endif
|
|
||||||
$(libfreeswitch_la_SOURCES): $(CORE_LIBS) $(switch_builddir)/modules.conf
|
|
||||||
|
|
||||||
src/include/switch_swigable_cpp.h: $(switch_srcdir)/src/include/switch_cpp.h
|
|
||||||
- cat $(switch_srcdir)/src/include/switch_cpp.h | perl $(switch_srcdir)/build/strip.pl > $(switch_srcdir)/src/include/switch_swigable_cpp.h
|
|
||||||
+ cat $(switch_srcdir)/src/include/switch_cpp.h | $(STAGING_DIR)/../host/usr/bin/perl $(switch_srcdir)/build/strip.pl > $(switch_srcdir)/src/include/switch_swigable_cpp.h
|
|
||||||
# $(CC) -E $(switch_srcdir)/src/include/switch_cpp.h \
|
|
||||||
# -I$(switch_srcdir)/src/include -I$(switch_srcdir)/libs/libteletone/src \
|
|
||||||
# -DSWITCH_DECLARE_CLASS= -DSWITCH_DECLARE\(x\)=x -DSWITCH_DECLARE_CONSTRUCTOR= \
|
|
||||||
@@ -374,7 +377,7 @@ fs_ivrd_LDFLAGS = $(AM_LDFLAGS) -lpthrea
|
|
||||||
nodist_freeswitch_SOURCES = src/include/switch_version.h
|
|
||||||
freeswitch_SOURCES = src/switch.c
|
|
||||||
freeswitch_CFLAGS = $(AM_CFLAGS) $(CORE_CFLAGS)
|
|
||||||
-freeswitch_LDFLAGS = $(AM_LDFLAGS) -lpthread -rpath $(libdir)
|
|
||||||
+freeswitch_LDFLAGS = $(AM_LDFLAGS) $(LDFLAGS) $(LIBS) -lpthread
|
|
||||||
freeswitch_LDADD = libfreeswitch.la libs/apr/libapr-1.la
|
|
||||||
|
|
||||||
if HAVE_ODBC
|
|
||||||
@@ -633,7 +636,9 @@ sndfile-reconf:
|
|
||||||
|
|
||||||
tiff-reconf:
|
|
||||||
cd libs/tiff-4.0.2 && autoreconf -fi
|
|
||||||
- cd libs/tiff-4.0.2 && sh ./configure.gnu $(MY_DEFAULT_ARGS)
|
|
||||||
+ cd libs/tiff-4.0.2 && sh ./configure.gnu $(MY_DEFAULT_ARGS) --host="$(GNU_TARGET_NAME)" --prefix="/usr"
|
|
||||||
+ cd libs/spandsp && autoreconf -fi
|
|
||||||
+ cd libs/spandsp && sh ./configure.gnu $(MY_DEFAULT_ARGS) --host="$(GNU_TARGET_NAME)" --prefix="/usr"
|
|
||||||
cd libs/tiff-4.0.2 && make
|
|
||||||
|
|
||||||
python-reconf:
|
|
||||||
@@ -658,9 +663,6 @@ iks-reconf:
|
|
||||||
$(MAKE) mod_dingaling-clean
|
|
||||||
|
|
||||||
spandsp-reconf: tiff-reconf
|
|
||||||
- cd libs/spandsp && $(MAKE) clean || echo
|
|
||||||
- cd libs/spandsp && autoreconf -fi
|
|
||||||
- cd libs/spandsp && sh ./configure.gnu $(MY_DEFAULT_ARGS)
|
|
||||||
cd libs/spandsp && $(MAKE)
|
|
||||||
|
|
||||||
sofia-reconf:
|
|
|
@ -1,160 +0,0 @@
|
||||||
--- a/configure.ac
|
|
||||||
+++ b/configure.ac
|
|
||||||
@@ -229,13 +229,16 @@ AX_COMPILER_VENDOR
|
|
||||||
if test "x${cross_compiling}" = "xyes"; then
|
|
||||||
CC_FOR_BUILD=${CC_FOR_BUILD-gcc}
|
|
||||||
case "$host" in
|
|
||||||
- arm*-linux-gnueabi*|arm*-*-linux-gnueabi*)
|
|
||||||
+ arm*-linux-gnueabi*|arm*-*-linux-*)
|
|
||||||
# spandsp modem
|
|
||||||
ac_cv_file__dev_ptmx=yes
|
|
||||||
# libjs
|
|
||||||
export ac_cv_va_copy=yes
|
|
||||||
+ # sofia-sip
|
|
||||||
+ export ac_cv_dev_urandom=yes
|
|
||||||
# srtp
|
|
||||||
export ac_cv_file__dev_urandom=yes
|
|
||||||
+ export ac_cv_file___dev_urandom_=yes
|
|
||||||
# rpl_malloc
|
|
||||||
export ac_cv_func_realloc_0_nonnull=yes
|
|
||||||
export ac_cv_func_malloc_0_nonnull=yes
|
|
||||||
@@ -248,7 +251,7 @@ if test "x${cross_compiling}" = "xyes";
|
|
||||||
export apr_cv_mutex_recursive=yes
|
|
||||||
export ac_cv_func_pthread_rwlock_init=yes
|
|
||||||
export apr_cv_type_rwlock_t=yes
|
|
||||||
- export apr_cv_process_shared_works=yes
|
|
||||||
+ export apr_cv_process_shared_works=no
|
|
||||||
export apr_cv_mutex_robust_shared=yes
|
|
||||||
;;
|
|
||||||
esac
|
|
||||||
@@ -379,9 +382,6 @@ elif test "x${ax_cv_c_compiler_vendor}"
|
|
||||||
elif test "x${ax_cv_c_compiler_vendor}" = "xgnu" ; then
|
|
||||||
APR_ADDTO(SWITCH_AM_CFLAGS, -fPIC)
|
|
||||||
APR_ADDTO(SWITCH_AM_CXXFLAGS, -fPIC)
|
|
||||||
- if test "$ac_cv_gcc_supports_w_no_unused_result" = yes; then
|
|
||||||
- APR_ADDTO(SWITCH_AM_CFLAGS, -Werror)
|
|
||||||
- fi
|
|
||||||
if test "${enable_64}" = "yes"; then
|
|
||||||
case "$host" in
|
|
||||||
*darwin*)
|
|
||||||
@@ -861,7 +861,6 @@ AC_CHECK_LIB(pthread, pthread_setschedpa
|
|
||||||
|
|
||||||
AC_CHECK_FUNC(socket, , AC_CHECK_LIB(socket, socket))
|
|
||||||
|
|
||||||
-AC_CHECK_FILE(/dev/ptmx, [AC_DEFINE(HAVE_DEV_PTMX, 1, [Define if you have /dev/ptmx])])
|
|
||||||
AC_CHECK_LIB(util, openpty, [AC_DEFINE(HAVE_OPENPTY, 1, [Define if you have openpty()])])
|
|
||||||
|
|
||||||
AC_CHECK_MEMBERS([struct tm.tm_gmtoff],,,[
|
|
||||||
@@ -1177,14 +1176,14 @@ case $host in
|
|
||||||
;;
|
|
||||||
esac
|
|
||||||
|
|
||||||
-if ! (test -x "$PKG_CONFIG" || test -x "$(which pkg-config)"); then
|
|
||||||
- AC_MSG_ERROR([You need to install pkg-config to configure FreeSWITCH.])
|
|
||||||
+if ! test -x "${STAGING_DIR}/../host/bin/pkg-config"; then
|
|
||||||
+ AC_MSG_ERROR([Missing tools/pkg-config package needed to configure FreeSWITCH.])
|
|
||||||
fi
|
|
||||||
|
|
||||||
-# temporary workaround for Debian libldns-dev package bug
|
|
||||||
-if test "$cross_compiling" != "yes" && test -f /usr/lib/pkg-config/libldns.pc; then
|
|
||||||
- path_push_unique PKG_CONFIG_PATH /usr/lib/pkg-config
|
|
||||||
-fi
|
|
||||||
+#
|
|
||||||
+# Workaround for OpenWRT pkg-config
|
|
||||||
+#
|
|
||||||
+path_push_unique PKG_CONFIG_PATH ${STAGING_DIR}/usr/lib/pkg-config
|
|
||||||
|
|
||||||
module_enabled() {
|
|
||||||
grep -v -e "\#" -e "^\$" modules.conf | sed -e "s|^.*/||" | grep "^${1}\$" >/dev/null
|
|
||||||
@@ -1205,7 +1204,7 @@ PKG_CHECK_MODULES([LDNS], [libldns >= 1.
|
|
||||||
AC_CHECK_LIB([ldns], [ldns_str2rdf_a], [LDNS_LIBS=-lldns])
|
|
||||||
AS_IF([test -z "$LDNS_LIBS"],[
|
|
||||||
if module_enabled mod_enum; then
|
|
||||||
- AC_MSG_ERROR([You need to either install libldns-dev or disable mod_enum in modules.conf])
|
|
||||||
+ AC_MSG_ERROR([You need to either install libldns or disable mod_enum in modules.conf])
|
|
||||||
else
|
|
||||||
AC_MSG_RESULT([no]); AM_CONDITIONAL([HAVE_LDNS],[false])
|
|
||||||
fi],[
|
|
||||||
@@ -1287,18 +1286,18 @@ AM_CONDITIONAL([HAVE_MYSQL],[test "$foun
|
|
||||||
# perl checks
|
|
||||||
#
|
|
||||||
|
|
||||||
-AC_CHECK_PROG(PERL,perl,[ac_cv_have_perl=yes],[ac_cv_have_perl=no])
|
|
||||||
-
|
|
||||||
-# -a "x$ac_cv_have_EXTERN_h" != "xno"
|
|
||||||
+AC_CHECK_PROG([PERL],[perl],[ac_cv_have_perl=yes],[ac_cv_have_perl=no],[${STAGING_DIR}/../host/usr/bin])
|
|
||||||
+PERL=$as_dir/$ac_word$ac_exec_ext
|
|
||||||
|
|
||||||
if test "x$ac_cv_have_perl" != "xno"; then
|
|
||||||
- PERL=perl
|
|
||||||
- PERL_SITEDIR="`$PERL -MConfig -e 'print $Config{archlib}'`"
|
|
||||||
- PERL_LIBDIR="-L`$PERL -MConfig -e 'print $Config{archlib}'`/CORE"
|
|
||||||
- PERL_LIBS="`$PERL -MConfig -e 'print $Config{libs}'`"
|
|
||||||
- PERL_CFLAGS="-w -DMULTIPLICITY `$PERL -MExtUtils::Embed -e ccopts | sed -e 's|-arch x86_64 -arch i386||'` -DEMBED_PERL"
|
|
||||||
- PERL_LDFLAGS="`$PERL -MExtUtils::Embed -e ldopts| sed -e 's|-arch x86_64 -arch i386||'`"
|
|
||||||
- PERL_INC="`$PERL -MExtUtils::Embed -e perl_inc`"
|
|
||||||
+ PERL_SITELIB="/usr/lib/perl5/5.20"
|
|
||||||
+ PERL_SITEDIR="${STAGING_DIR}${PERL_SITELIB}"
|
|
||||||
+ PERL_COREDIR="${PERL_SITEDIR}/CORE"
|
|
||||||
+ PERL_INC="-I${PERL_COREDIR}"
|
|
||||||
+ PERL_CFLAGS="-w -DMULTIPLICITY -fwrapv -fno-strict-aliasing -pipe -fstack-protector ${PERL_INC} -DEMBED_PERL"
|
|
||||||
+ PERL_LIBDIR="-L${PERL_COREDIR}"
|
|
||||||
+ PERL_LIBS="-lnsl -lgdbm -ldb -ldl -lm -lcrypt -lutil -lc "
|
|
||||||
+ PERL_LDFLAGS="${LDFLAGS} -lpthread ${PERL_LIBS}"
|
|
||||||
|
|
||||||
save_CFLAGS="$CFLAGS"
|
|
||||||
CFLAGS="$PERL_CFLAGS"
|
|
||||||
@@ -1311,12 +1310,15 @@ if test "x$ac_cv_have_perl" != "xno"; th
|
|
||||||
AC_CHECK_LIB([perl], [perl_alloc], ac_cv_use_libperl=yes, ac_cv_use_libperl=no)
|
|
||||||
LDFLAGS="$save_LDFLAGS"
|
|
||||||
|
|
||||||
- AC_SUBST(PERL_SITEDIR)
|
|
||||||
- AC_SUBST(PERL_LIBDIR)
|
|
||||||
- AC_SUBST(PERL_LIBS)
|
|
||||||
+ AC_SUBST(PERL)
|
|
||||||
AC_SUBST(PERL_CFLAGS)
|
|
||||||
- AC_SUBST(PERL_LDFLAGS)
|
|
||||||
+ AC_SUBST(PERL_COREDIR)
|
|
||||||
AC_SUBST(PERL_INC)
|
|
||||||
+ AC_SUBST(PERL_LDFLAGS)
|
|
||||||
+ AC_SUBST(PERL_LIBDIR)
|
|
||||||
+ AC_SUBST(PERL_LIBS)
|
|
||||||
+ AC_SUBST(PERL_SITEDIR)
|
|
||||||
+ AC_SUBST(PERL_SITELIB)
|
|
||||||
fi
|
|
||||||
|
|
||||||
AM_CONDITIONAL([HAVE_PERL],[test "x$ac_cv_have_perl" != "xno" -a "x$ac_cv_have_EXTERN_h" != "xno" -a "x$ac_cv_use_libperl" != "xno"])
|
|
||||||
@@ -1325,17 +1327,19 @@ AM_CONDITIONAL([HAVE_PERL],[test "x$ac_c
|
|
||||||
# php checks
|
|
||||||
#
|
|
||||||
|
|
||||||
-AC_CHECK_PROG(PHP,php,[ac_cv_have_php=yes],[ac_cv_have_php=no])
|
|
||||||
-AC_CHECK_PROG(PHP_CONFIG,php-config,[ac_cv_have_php_config=yes],[ac_cv_have_php_config=no])
|
|
||||||
+AC_CHECK_PROG([PHP],[php],[ac_cv_have_php=yes],[ac_cv_have_php=no],[${STAGING_DIR}/../host/usr/bin:/usr/bin])
|
|
||||||
+PHP=$as_dir/$ac_word$ac_exec_ext
|
|
||||||
+
|
|
||||||
+AC_CHECK_PROG([PHP_CONFIG],[php-config],[ac_cv_have_php_config=yes],[ac_cv_have_php_config=no],[${STAGING_DIR}/../host/usr/bin])
|
|
||||||
+PHP_CONFIG=$as_dir/$ac_word$ac_exec_ext
|
|
||||||
+
|
|
||||||
AM_CONDITIONAL([HAVE_PHP],[test "x$ac_cv_have_php" != "xno" -a "x$ac_cv_have_php_config" != "xno"])
|
|
||||||
|
|
||||||
if test "x$ac_cv_have_php" != "xno" -a "x$ac_cv_have_php_config" != "xno"; then
|
|
||||||
- PHP=php
|
|
||||||
- PHP_CONFIG=php-config
|
|
||||||
PHP_LDFLAGS="`$PHP_CONFIG --ldflags`"
|
|
||||||
- PHP_LIBS="`$PHP_CONFIG --libs | sed -r 's/ ?-l(bz2|pcre|xml2|gssapi_krb5|krb5|k5crypto|com_err|history|z|readline|gmp|ssl|crypto)//g'`"
|
|
||||||
+ PHP_LIBS="`$PHP_CONFIG --libs | sed -r 's/ ?-l(bz2|pcre|xml2|gssapi_krb5|krb5|k5crypto|com_err|history|z|readline|gmp|ssl|crypt(o|))//g;s/^/-lcrypto/g'`"
|
|
||||||
PHP_EXT_DIR="`$PHP_CONFIG --extension-dir`"
|
|
||||||
- PHP_INC_DIR="`$PHP -r 'echo ini_get("include_path");' | cut -d: -f2`"
|
|
||||||
+ PHP_INC_DIR="`$PHP_CONFIG --include-dir`"
|
|
||||||
PHP_INI_DIR="`$PHP_CONFIG --configure-options | tr " " "\n" | grep -- --with-config-file-scan-dir | cut -f2 -d=`"
|
|
||||||
PHP_CFLAGS="`$PHP_CONFIG --includes`"
|
|
||||||
AC_SUBST(PHP_LDFLAGS)
|
|
||||||
@@ -1443,6 +1447,7 @@ then
|
|
||||||
AC_MSG_NOTICE([Your python seems OK, do not forget to enable mod_python in modules.conf])
|
|
||||||
AC_SUBST([PYTHON_CFLAGS], [$PYTHON_CFLAGS])
|
|
||||||
AC_SUBST([PYTHON_LDFLAGS], [$PYTHON_LDFLAGS])
|
|
||||||
+ AC_SUBST([PYTHON_LIB], [$PYTHON_LIB])
|
|
||||||
fi
|
|
||||||
else
|
|
||||||
AS_IF([test "$with_python" = "try"],
|
|
|
@ -1,20 +0,0 @@
|
||||||
--- a/libs/libzrtp/include/zrtp_config.h
|
|
||||||
+++ b/libs/libzrtp/include/zrtp_config.h
|
|
||||||
@@ -68,8 +68,16 @@
|
|
||||||
* If the byte order is not specified manually in zrtp_config_user.h - try to detect it automatically
|
|
||||||
*/
|
|
||||||
#if !defined(ZRTP_BYTE_ORDER)
|
|
||||||
+#if defined(linux) || defined(__linux)
|
|
||||||
|
|
||||||
-#if defined(_i386_) || defined(i_386_) || defined(_X86_) || defined(x86) || defined(__i386__) || \
|
|
||||||
+#include <endian.h>
|
|
||||||
+#if __BYTE_ORDER == __LITTLE_ENDIAN
|
|
||||||
+#define ZRTP_BYTE_ORDER ZBO_LITTLE_ENDIAN
|
|
||||||
+#elif __BYTE_ORDER == __BIG_ENDIAN
|
|
||||||
+#define ZRTP_BYTE_ORDER ZBO_BIG_ENDIAN
|
|
||||||
+#endif
|
|
||||||
+
|
|
||||||
+#elif defined(_i386_) || defined(i_386_) || defined(_X86_) || defined(x86) || defined(__i386__) || \
|
|
||||||
defined(__i386) || defined(_M_IX86) || defined(__I86__)
|
|
||||||
/*
|
|
||||||
* Generic i386 processor family, little-endian
|
|
|
@ -1,8 +0,0 @@
|
||||||
--- a/libs/sofia-sip/configure.gnu
|
|
||||||
+++ b/libs/sofia-sip/configure.gnu
|
|
||||||
@@ -1,4 +1,4 @@
|
|
||||||
#! /bin/sh
|
|
||||||
srcpath=$(dirname $0 2>/dev/null ) || srcpath="."
|
|
||||||
-$srcpath/configure "$@" --with-pic --with-glib=no --disable-shared --without-doxygen --disable-stun
|
|
||||||
+$srcpath/configure "$@" --with-pic --with-glib=no --disable-shared --without-doxygen
|
|
||||||
|
|
|
@ -1,11 +0,0 @@
|
||||||
--- a/libs/spandsp/src/spandsp/fast_convert.h
|
|
||||||
+++ b/libs/spandsp/src/spandsp/fast_convert.h
|
|
||||||
@@ -195,7 +195,7 @@ extern "C"
|
|
||||||
{
|
|
||||||
return (long int) (x);
|
|
||||||
}
|
|
||||||
-#elif defined(__ppc__) || defined(__powerpc__)
|
|
||||||
+#elif 0 /* defined(__ppc__) || defined(__powerpc__) */
|
|
||||||
static __inline__ long int lfastrint(register double x)
|
|
||||||
{
|
|
||||||
int res[2];
|
|
|
@ -1,11 +0,0 @@
|
||||||
--- a/libs/spandsp/src/t4_rx.c
|
|
||||||
+++ b/libs/spandsp/src/t4_rx.c
|
|
||||||
@@ -50,7 +50,7 @@
|
|
||||||
#include "spandsp/stdbool.h"
|
|
||||||
#endif
|
|
||||||
#include "floating_fudge.h"
|
|
||||||
-#include <tiffio.h>
|
|
||||||
+#include <tiffiop.h>
|
|
||||||
|
|
||||||
#include "spandsp/telephony.h"
|
|
||||||
#include "spandsp/alloc.h"
|
|
|
@ -1,11 +0,0 @@
|
||||||
--- a/libs/spandsp/src/t4_tx.c
|
|
||||||
+++ b/libs/spandsp/src/t4_tx.c
|
|
||||||
@@ -50,7 +50,7 @@
|
|
||||||
#include "spandsp/stdbool.h"
|
|
||||||
#endif
|
|
||||||
#include "floating_fudge.h"
|
|
||||||
-#include <tiffio.h>
|
|
||||||
+#include <tiffiop.h>
|
|
||||||
|
|
||||||
#include "spandsp/telephony.h"
|
|
||||||
#include "spandsp/alloc.h"
|
|
|
@ -1,13 +0,0 @@
|
||||||
--- a/libs/xmlrpc-c/config.mk.in
|
|
||||||
+++ b/libs/xmlrpc-c/config.mk.in
|
|
||||||
@@ -335,8 +335,8 @@ endif
|
|
||||||
# The cross compiling user can update config.mk or override
|
|
||||||
# BUILDTOOL_CC on a make command.
|
|
||||||
|
|
||||||
-BUILDTOOL_CC = $(CC)
|
|
||||||
-BUILDTOOL_CCLD = $(CCLD)
|
|
||||||
+BUILDTOOL_CC = $(HOSTCC)
|
|
||||||
+BUILDTOOL_CCLD = $(HOSTCC)
|
|
||||||
|
|
||||||
# Here are the commands 'make install' uses to install various kinds of files:
|
|
||||||
|
|
|
@ -1,16 +0,0 @@
|
||||||
--- a/libs/xmlrpc-c/lib/expat/gennmtab/Makefile
|
|
||||||
+++ b/libs/xmlrpc-c/lib/expat/gennmtab/Makefile
|
|
||||||
@@ -1,3 +1,5 @@
|
|
||||||
+TOPDIR=$(shell (cd $(SRCDIR)/../../../../..; pwd))
|
|
||||||
+
|
|
||||||
ifeq ($(SRCDIR),)
|
|
||||||
updir = $(shell echo $(dir $(1)) | sed 's/.$$//')
|
|
||||||
EXPATDIR := $(call updir,$(CURDIR))
|
|
||||||
@@ -7,6 +9,7 @@ ifeq ($(SRCDIR),)
|
|
||||||
endif
|
|
||||||
SUBDIR := lib/expat/gennmtab
|
|
||||||
|
|
||||||
+include $(TOPDIR)/rules.mk
|
|
||||||
include $(BLDDIR)/config.mk
|
|
||||||
|
|
||||||
LDFLAGS = $(LADD)
|
|
|
@ -8,7 +8,7 @@
|
||||||
#
|
#
|
||||||
AC_ARG_WITH(
|
AC_ARG_WITH(
|
||||||
[erlang],
|
[erlang],
|
||||||
@@ -19,22 +19,23 @@ then
|
@@ -20,22 +20,23 @@ then
|
||||||
if test ! -x "$with_erlang" ; then
|
if test ! -x "$with_erlang" ; then
|
||||||
AC_MSG_ERROR([Specified erlang does not exist or is not executable: $with_erlang])
|
AC_MSG_ERROR([Specified erlang does not exist or is not executable: $with_erlang])
|
||||||
fi
|
fi
|
||||||
|
@ -39,7 +39,7 @@
|
||||||
AC_MSG_CHECKING([erlang libdir])
|
AC_MSG_CHECKING([erlang libdir])
|
||||||
if test -z "`echo $ERLANG_LIBDIR`" ; then
|
if test -z "`echo $ERLANG_LIBDIR`" ; then
|
||||||
AC_MSG_ERROR([failed])
|
AC_MSG_ERROR([failed])
|
||||||
@@ -42,9 +43,16 @@ then
|
@@ -43,9 +44,16 @@ then
|
||||||
ERLANG_LDFLAGS="-L$ERLANG_LIBDIR $ERLANG_LDFLAGS"
|
ERLANG_LDFLAGS="-L$ERLANG_LIBDIR $ERLANG_LDFLAGS"
|
||||||
LIBS="-L$ERLANG_LIBDIR $LIBS"
|
LIBS="-L$ERLANG_LIBDIR $LIBS"
|
||||||
fi
|
fi
|
||||||
|
@ -57,7 +57,7 @@
|
||||||
AC_MSG_CHECKING([erlang incdir])
|
AC_MSG_CHECKING([erlang incdir])
|
||||||
if test -z "`echo $ERLANG_INCDIR`" ; then
|
if test -z "`echo $ERLANG_INCDIR`" ; then
|
||||||
AC_MSG_ERROR([failed])
|
AC_MSG_ERROR([failed])
|
||||||
@@ -58,10 +66,11 @@ then
|
@@ -59,10 +67,11 @@ then
|
||||||
|
|
||||||
ERLANG_LIB="ei"
|
ERLANG_LIB="ei"
|
||||||
|
|
||||||
|
@ -71,7 +71,7 @@
|
||||||
|
|
||||||
if test "$has_libei" = "no" ; then
|
if test "$has_libei" = "no" ; then
|
||||||
AS_IF([test "$with_erlang" = "try"],
|
AS_IF([test "$with_erlang" = "try"],
|
||||||
@@ -75,7 +84,7 @@ then
|
@@ -76,7 +85,7 @@ then
|
||||||
)
|
)
|
||||||
else
|
else
|
||||||
ERLANG_LDFLAGS="$ERLANG_LDFLAGS -lei"
|
ERLANG_LDFLAGS="$ERLANG_LDFLAGS -lei"
|
||||||
|
@ -79,8 +79,8 @@
|
||||||
+ AC_MSG_NOTICE([Your erlang seems OK. You can now use ErLang in your codes.])
|
+ AC_MSG_NOTICE([Your erlang seems OK. You can now use ErLang in your codes.])
|
||||||
AC_SUBST([ERLANG_CFLAGS], [$ERLANG_CFLAGS])
|
AC_SUBST([ERLANG_CFLAGS], [$ERLANG_CFLAGS])
|
||||||
AC_SUBST([ERLANG_LDFLAGS], [$ERLANG_LDFLAGS])
|
AC_SUBST([ERLANG_LDFLAGS], [$ERLANG_LDFLAGS])
|
||||||
fi
|
AM_CONDITIONAL([HAVE_ERLANG],[true])
|
||||||
@@ -85,12 +94,12 @@ then
|
@@ -87,12 +96,12 @@ then
|
||||||
|
|
||||||
else
|
else
|
||||||
AS_IF([test "$with_erlang" = "try"],
|
AS_IF([test "$with_erlang" = "try"],
|
|
@ -1,10 +1,10 @@
|
||||||
--- a/build/modules.conf.in
|
--- a/build/modules.conf.in
|
||||||
+++ b/build/modules.conf.in
|
+++ b/build/modules.conf.in
|
||||||
@@ -35,6 +35,7 @@ applications/mod_httapi
|
@@ -38,6 +38,7 @@ applications/mod_httapi
|
||||||
#applications/mod_rad_auth
|
#applications/mod_rad_auth
|
||||||
#applications/mod_redis
|
#applications/mod_redis
|
||||||
#applications/mod_rss
|
#applications/mod_rss
|
||||||
+#applications/mod_skel
|
+#applications/mod_skel
|
||||||
#applications/mod_sonar
|
|
||||||
applications/mod_sms
|
applications/mod_sms
|
||||||
#applications/mod_snapshot
|
#applications/mod_snapshot
|
||||||
|
#applications/mod_snom
|
65
net/freeswitch/patches/musl/configure_ac.patch
Normal file
65
net/freeswitch/patches/musl/configure_ac.patch
Normal file
|
@ -0,0 +1,65 @@
|
||||||
|
--- a/configure.ac
|
||||||
|
+++ b/configure.ac
|
||||||
|
@@ -254,7 +254,7 @@ AX_COMPILER_VENDOR
|
||||||
|
if test "x${cross_compiling}" = "xyes"; then
|
||||||
|
CC_FOR_BUILD=${CC_FOR_BUILD-gcc}
|
||||||
|
case "$host" in
|
||||||
|
- arm*-linux-gnueabi*|arm*-*-linux-gnueabi*)
|
||||||
|
+ arm*-linux-gnueabi*|arm*-*-linux-*)
|
||||||
|
# spandsp modem
|
||||||
|
ac_cv_file__dev_ptmx=yes
|
||||||
|
# libjs
|
||||||
|
@@ -273,7 +273,7 @@ if test "x${cross_compiling}" = "xyes";
|
||||||
|
export apr_cv_mutex_recursive=yes
|
||||||
|
export ac_cv_func_pthread_rwlock_init=yes
|
||||||
|
export apr_cv_type_rwlock_t=yes
|
||||||
|
- export apr_cv_process_shared_works=yes
|
||||||
|
+ export apr_cv_process_shared_works=no
|
||||||
|
export apr_cv_mutex_robust_shared=yes
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
@@ -405,9 +405,6 @@ elif test "x${ax_cv_c_compiler_vendor}"
|
||||||
|
elif test "x${ax_cv_c_compiler_vendor}" = "xgnu" ; then
|
||||||
|
APR_ADDTO(SWITCH_AM_CFLAGS, -fPIC)
|
||||||
|
APR_ADDTO(SWITCH_AM_CXXFLAGS, -fPIC)
|
||||||
|
- if test "$ac_cv_gcc_supports_w_no_unused_result" = yes; then
|
||||||
|
- APR_ADDTO(SWITCH_AM_CFLAGS, -Werror)
|
||||||
|
- fi
|
||||||
|
if test "${enable_64}" = "yes"; then
|
||||||
|
case "$host" in
|
||||||
|
*darwin*)
|
||||||
|
@@ -901,7 +898,6 @@ AC_CHECK_LIB(pthread, pthread_setschedpa
|
||||||
|
|
||||||
|
AC_CHECK_FUNC(socket, , AC_CHECK_LIB(socket, socket))
|
||||||
|
|
||||||
|
-AC_CHECK_FILE(/dev/ptmx, [AC_DEFINE(HAVE_DEV_PTMX, 1, [Define if you have /dev/ptmx])])
|
||||||
|
AC_CHECK_LIB(util, openpty, [AC_DEFINE(HAVE_OPENPTY, 1, [Define if you have openpty()])])
|
||||||
|
|
||||||
|
AC_CHECK_MEMBERS([struct tm.tm_gmtoff],,,[
|
||||||
|
@@ -1474,14 +1470,14 @@ AM_CONDITIONAL([HAVE_MYSQL],[test "$foun
|
||||||
|
# perl checks
|
||||||
|
#
|
||||||
|
|
||||||
|
-AC_CHECK_PROG(PERL,perl,[ac_cv_have_perl=yes],[ac_cv_have_perl=no])
|
||||||
|
+AC_CHECK_PROG(PERL,[perl],[ac_cv_have_perl=yes],[ac_cv_have_perl=no],[${STAGING_DIR}/../host/usr/bin])
|
||||||
|
+PERL=$as_dir/$ac_word$ac_exec_ext
|
||||||
|
|
||||||
|
# -a "x$ac_cv_have_EXTERN_h" != "xno"
|
||||||
|
|
||||||
|
if test "x$ac_cv_have_perl" != "xno"; then
|
||||||
|
- PERL=perl
|
||||||
|
- PERL_SITEDIR="`$PERL -MConfig -e 'print $Config{archlib}'`"
|
||||||
|
- PERL_LIBDIR="-L`$PERL -MConfig -e 'print $Config{archlib}'`/CORE"
|
||||||
|
+ PERL_SITEDIR="`$PERL -MConfig -e 'print $Config{archlibexp}'`"
|
||||||
|
+ PERL_LIBDIR="-L`$PERL -MConfig -e 'print $Config{archlibexp}'`/CORE"
|
||||||
|
PERL_LIBS="`$PERL -MConfig -e 'print $Config{libs}'`"
|
||||||
|
PERL_CFLAGS="-w -DMULTIPLICITY `$PERL -MExtUtils::Embed -e ccopts | sed -e 's|-arch x86_64 -arch i386||'` -DEMBED_PERL"
|
||||||
|
PERL_LDFLAGS="`$PERL -MExtUtils::Embed -e ldopts| sed -e 's|-arch x86_64 -arch i386||'`"
|
||||||
|
@@ -1498,6 +1494,7 @@ if test "x$ac_cv_have_perl" != "xno"; th
|
||||||
|
AC_CHECK_LIB([perl], [perl_alloc], ac_cv_use_libperl=yes, ac_cv_use_libperl=no)
|
||||||
|
LDFLAGS="$save_LDFLAGS"
|
||||||
|
|
||||||
|
+ AC_SUBST(PERL)
|
||||||
|
AC_SUBST(PERL_SITEDIR)
|
||||||
|
AC_SUBST(PERL_LIBDIR)
|
||||||
|
AC_SUBST(PERL_LIBS)
|
|
@ -0,0 +1,8 @@
|
||||||
|
--- a/libs/apr-util/configure.gnu
|
||||||
|
+++ b/libs/apr-util/configure.gnu
|
||||||
|
@@ -1,4 +1,4 @@
|
||||||
|
#! /bin/sh
|
||||||
|
srcpath=$(dirname $0 2>/dev/null ) || srcpath="."
|
||||||
|
-$srcpath/configure "$@" --with-apr=../apr --disable-shared --with-pic --without-sqlite2 --without-sqlite3 --with-expat=builtin
|
||||||
|
+$srcpath/configure "$@" --with-apr=../apr --disable-shared --with-expat=builtin
|
||||||
|
|
|
@ -1,18 +1,13 @@
|
||||||
--- a/libs/srtp/configure.ac
|
--- a/libs/srtp/configure.ac
|
||||||
+++ b/libs/srtp/configure.ac
|
+++ b/libs/srtp/configure.ac
|
||||||
@@ -130,9 +130,12 @@ if test "$enable_kernel_linux" = "yes";
|
@@ -130,10 +130,6 @@ if test "$enable_kernel_linux" = "yes";
|
||||||
fi
|
fi
|
||||||
AC_MSG_RESULT($enable_kernel_linux)
|
AC_MSG_RESULT($enable_kernel_linux)
|
||||||
|
|
||||||
-dnl Check for /dev/urandom
|
-dnl Check for /dev/urandom
|
||||||
-AC_CHECK_FILE(/dev/urandom, DEV_URANDOM=/dev/urandom,
|
-AC_CHECK_FILE(/dev/urandom, DEV_URANDOM=/dev/urandom,
|
||||||
- [AC_CHECK_FILE(/dev/random, DEV_URANDOM=/dev/random)])
|
- [AC_CHECK_FILE(/dev/random, DEV_URANDOM=/dev/random)])
|
||||||
+
|
-
|
||||||
+dnl Check for /dev/urandom ONLY when NOT cross compiling
|
|
||||||
+if test "$cross_compiling" != yes; then
|
|
||||||
+ AC_CHECK_FILE(/dev/urandom, DEV_URANDOM=/dev/urandom,
|
|
||||||
+ [AC_CHECK_FILE(/dev/random, DEV_URANDOM=/dev/random)])
|
|
||||||
+fi
|
|
||||||
|
|
||||||
dnl Checks for header files.
|
dnl Checks for header files.
|
||||||
AC_HEADER_STDC
|
AC_HEADER_STDC
|
||||||
|
AC_CHECK_HEADERS(stdlib.h)
|
|
@ -1,24 +0,0 @@
|
||||||
--- a/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/configure.in
|
|
||||||
+++ b/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/configure.in
|
|
||||||
@@ -56,21 +56,6 @@ dnl Checks for programs.
|
|
||||||
AC_PROG_CPP
|
|
||||||
AC_PROG_CXX
|
|
||||||
|
|
||||||
-dnl check for gcc 2.95.x
|
|
||||||
-AC_TRY_RUN([
|
|
||||||
-#include <unistd.h>
|
|
||||||
-main()
|
|
||||||
-{
|
|
||||||
-#if defined(__GNUC__) && \
|
|
||||||
- ! (__GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 95))
|
|
||||||
- return 1;
|
|
||||||
-#endif
|
|
||||||
- return 0;
|
|
||||||
-}
|
|
||||||
-],,
|
|
||||||
-[echo "need at least gcc 2.95 to compile correctly"
|
|
||||||
-exit 1])
|
|
||||||
-
|
|
||||||
dnl check for alloca
|
|
||||||
AC_FUNC_ALLOCA
|
|
||||||
|
|
|
@ -1,15 +0,0 @@
|
||||||
--- a/libs/libcodec2/src/Makefile.am
|
|
||||||
+++ b/libs/libcodec2/src/Makefile.am
|
|
||||||
@@ -88,6 +88,12 @@ codebookge.$(OBJEXT): codebookge.c
|
|
||||||
|
|
||||||
codebook.lo: codebook.c
|
|
||||||
|
|
||||||
+generate_codebook:
|
|
||||||
+ $(CC_FOR_BUILD) -o generate_codebook generate_codebook.c -lm
|
|
||||||
+
|
|
||||||
+genlspdtcb:
|
|
||||||
+ $(CC_FOR_BUILD) -o genlspdtcb genlspdtcb.c -lm
|
|
||||||
+
|
|
||||||
codebook.c: generate_codebook $(CODEBOOKS)
|
|
||||||
./generate_codebook lsp_cb $(CODEBOOKS) > codebook.c
|
|
||||||
|
|
|
@ -1,11 +0,0 @@
|
||||||
--- a/src/mod/codecs/mod_celt/Makefile.am
|
|
||||||
+++ b/src/mod/codecs/mod_celt/Makefile.am
|
|
||||||
@@ -19,7 +19,7 @@ $(CELT_DIR):
|
|
||||||
|
|
||||||
$(CELT_BUILDDIR)/Makefile: $(CELT_DIR)
|
|
||||||
mkdir -p $(CELT_BUILDDIR)
|
|
||||||
- cd $(CELT_BUILDDIR) && $(DEFAULT_VARS) $(CELT_DIR)/configure $(DEFAULT_ARGS) --disable-shared --with-pic --srcdir=$(CELT_DIR)
|
|
||||||
+ cd $(CELT_BUILDDIR) && $(DEFAULT_VARS) $(CELT_DIR)/configure $(DEFAULT_ARGS) --disable-shared --with-pic --srcdir=$(CELT_DIR) --with-ogg=$(STAGING_DIR)/usr
|
|
||||||
$(TOUCH_TARGET)
|
|
||||||
|
|
||||||
$(CELT_LA): $(CELT_BUILDDIR)/Makefile
|
|
|
@ -1,11 +0,0 @@
|
||||||
--- a/src/mod/codecs/mod_isac/typedefs.h
|
|
||||||
+++ b/src/mod/codecs/mod_isac/typedefs.h
|
|
||||||
@@ -66,7 +66,7 @@
|
|
||||||
#define WEBRTC_ARCH_X86
|
|
||||||
#define WEBRTC_ARCH_32_BITS
|
|
||||||
#define WEBRTC_ARCH_LITTLE_ENDIAN
|
|
||||||
-#elif defined(__ARMEL__)
|
|
||||||
+#elif defined(__ARMEL__) || defined(__mips__)
|
|
||||||
// TODO(andrew): We'd prefer to control platform defines here, but this is
|
|
||||||
// currently provided by the Android makefiles. Commented to avoid duplicate
|
|
||||||
// definition warnings.
|
|
|
@ -1,11 +0,0 @@
|
||||||
--- a/src/mod/codecs/mod_opus/Makefile.am
|
|
||||||
+++ b/src/mod/codecs/mod_opus/Makefile.am
|
|
||||||
@@ -19,7 +19,7 @@ $(OPUS_DIR)/configure:
|
|
||||||
|
|
||||||
$(OPUS_BUILDDIR)/Makefile: $(OPUS_DIR)/configure
|
|
||||||
mkdir -p $(OPUS_BUILDDIR)
|
|
||||||
- cd $(OPUS_BUILDDIR) && $(DEFAULT_VARS) $(OPUS_DIR)/configure $(MY_DEFAULT_ARGS)
|
|
||||||
+ cd $(OPUS_BUILDDIR) && $(DEFAULT_VARS) $(OPUS_DIR)/configure $(MY_DEFAULT_ARGS) --host=$(host) --disable-shared --with-pic --srcdir=$(OPUS_DIR)
|
|
||||||
$(TOUCH_TARGET)
|
|
||||||
|
|
||||||
$(OPUS_LA): $(OPUS_BUILDDIR)/Makefile
|
|
|
@ -1,11 +0,0 @@
|
||||||
--- a/src/mod/directories/mod_ldap/Makefile.am
|
|
||||||
+++ b/src/mod/directories/mod_ldap/Makefile.am
|
|
||||||
@@ -13,7 +13,7 @@ mod_ldap_la_CFLAGS = $(AM_CFLAGS) -DWI
|
|
||||||
mod_ldap_la_LIBADD = $(switch_builddir)/libfreeswitch.la $(LDAPLA) $(LIBLBERLA)
|
|
||||||
mod_ldap_la_LDFLAGS = -avoid-version -module -no-undefined -shared
|
|
||||||
|
|
||||||
-MY_DEFAULT_ARGS= --build=$(build) --host=$(host) --target=$(target) --prefix="$(prefix)" --exec_prefix="$(exec_prefix)" --libdir="$(libdir)" --disable-slapd --disable-bdb --disable-hdb
|
|
||||||
+MY_DEFAULT_ARGS= --build=$(build) --host=$(host) --target=$(target) --prefix="$(prefix)" --exec_prefix="$(exec_prefix)" --libdir="$(libdir)" --with-yielding_select=yes --disable-slapd --disable-bdb --disable-hdb
|
|
||||||
|
|
||||||
$(MODNAME).lo: $(LDAPLA) $(LIBLBERLA)
|
|
||||||
|
|
|
@ -1,11 +0,0 @@
|
||||||
--- a/src/mod/endpoints/mod_gsmopen/Makefile.am
|
|
||||||
+++ b/src/mod/endpoints/mod_gsmopen/Makefile.am
|
|
||||||
@@ -12,7 +12,7 @@ SPANDSP_LA=$(SPANDSP_BUILDDIR)/src/libsp
|
|
||||||
mod_LTLIBRARIES = mod_gsmopen.la
|
|
||||||
mod_gsmopen_la_SOURCES = mod_gsmopen.cpp gsmopen_protocol.cpp
|
|
||||||
mod_gsmopen_la_CXXFLAGS = $(SWITCH_AM_CXXFLAGS)
|
|
||||||
-mod_gsmopen_la_CPPFLAGS = -I$(SPANDSP_DIR)/src -I$(TIFF_DIR)/libtiff -I$(SPANDSP_BUILDDIR)/src -I$(TIFF_BUILDDIR)/libtiff -I.
|
|
||||||
+mod_gsmopen_la_CPPFLAGS = -I$(SPANDSP_DIR)/src -I$(TIFF_DIR)/libtiff -I$(SPANDSP_BUILDDIR)/src -I$(TIFF_BUILDDIR)/libtiff -I. -fpermissive
|
|
||||||
mod_gsmopen_la_LIBADD = $(switch_builddir)/libfreeswitch.la $(SPANDSP_LA) $(TIFF_LA)
|
|
||||||
mod_gsmopen_la_LDFLAGS = -avoid-version -module -no-undefined -lctb-0.16 -lgsmme
|
|
||||||
|
|
|
@ -1,28 +0,0 @@
|
||||||
--- a/src/mod/endpoints/mod_verto/Makefile.am
|
|
||||||
+++ b/src/mod/endpoints/mod_verto/Makefile.am
|
|
||||||
@@ -9,19 +9,19 @@ mod_verto_la_LIBADD = $(switch_builddi
|
|
||||||
mod_verto_la_LDFLAGS = -avoid-version -module -no-undefined -shared
|
|
||||||
|
|
||||||
if HAVE_PERL
|
|
||||||
-#perldir = $(PERL_SITEDIR)
|
|
||||||
-noinst_LTLIBRARIES = MCAST.la
|
|
||||||
+perldir = "$(PERL_SITELIB)"
|
|
||||||
+perl_LTLIBRARIES = MCAST.la
|
|
||||||
MCAST_la_SOURCES = mcast/mcast_wrap.cpp mcast/perlxsi.c mcast/mcast.c mcast/mcast_cpp.cpp
|
|
||||||
MCAST_la_CFLAGS = $(CC_CFLAGS) $(CFLAGS) $(SWITCH_AM_CFLAGS) $(PERL_CFLAGS)
|
|
||||||
MCAST_la_CXXFLAGS = $(SWITCH_AM_CXXFLAGS) $(CXXFLAGS) -w $(PERL_INC)
|
|
||||||
MCAST_la_CPPFLAGS = -I$(switch_srcdir)/src/mod/endpoints/mod_verto/mcast
|
|
||||||
MCAST_la_LDFLAGS = -avoid-version -module -no-undefined -shared $(PERL_LDFLAGS)
|
|
||||||
|
|
||||||
-#install-data-local: perlmod-install
|
|
||||||
+install-data-local: perlmod-install
|
|
||||||
|
|
||||||
-#perlmod-install: install-perlLTLIBRARIES
|
|
||||||
-# install -d -m 755 $(DESTDIR)$(PERL_SITEDIR)
|
|
||||||
-# install -m 755 mcast/MCAST.pm $(DESTDIR)$(PERL_SITEDIR)
|
|
||||||
+perlmod-install: install-perlLTLIBRARIES
|
|
||||||
+ install -d -m 755 $(DESTDIR)$(perldir)
|
|
||||||
+ install -m 755 mcast/MCAST.pm $(DESTDIR)$(perldir)
|
|
||||||
endif
|
|
||||||
|
|
||||||
mcast/esl_wrap.cpp:
|
|
|
@ -1,32 +0,0 @@
|
||||||
--- a/src/mod/languages/mod_perl/Makefile.am
|
|
||||||
+++ b/src/mod/languages/mod_perl/Makefile.am
|
|
||||||
@@ -1,22 +1,22 @@
|
|
||||||
include $(top_srcdir)/build/modmake.rulesam
|
|
||||||
MODNAME=mod_perl
|
|
||||||
-PERL = perl
|
|
||||||
-PERL_LIBDIR =-L`perl -MConfig -e 'print $$Config{archlib}'`/CORE
|
|
||||||
-PERL_LIBS =`perl -MConfig -e 'print $$Config{libs}'`
|
|
||||||
|
|
||||||
-perldir=$(prefix)/perl
|
|
||||||
+perldir="$(PERL_SITELIB)"
|
|
||||||
+
|
|
||||||
mod_LTLIBRARIES = mod_perl.la
|
|
||||||
perl_LTLIBRARIES = freeswitch.la
|
|
||||||
mod_perl_la_SOURCES = mod_perl.c freeswitch_perl.cpp mod_perl_wrap.cpp perlxsi.c
|
|
||||||
mod_perl_la_CFLAGS = $(AM_CFLAGS)
|
|
||||||
mod_perl_la_CXXFLAGS = $(AM_CXXFLAGS)
|
|
||||||
-mod_perl_la_CPPFLAGS = -w -DMULTIPLICITY `$(PERL) -MExtUtils::Embed -e ccopts` -DEMBED_PERL -I$(switch_srcdir)/libs/libteletone/src/
|
|
||||||
+mod_perl_la_CPPFLAGS = ${PERL_CFLAGS} -I$(switch_srcdir)/libs/libteletone/src/
|
|
||||||
mod_perl_la_LIBADD = $(switch_builddir)/libfreeswitch.la
|
|
||||||
-mod_perl_la_LDFLAGS = -avoid-version -module -no-undefined -shared `$(PERL) -MExtUtils::Embed -e ldopts` `$(PERL) -MConfig -e 'print $$Config{libs}'`
|
|
||||||
+#mod_perl_la_LDFLAGS = -avoid-version -module -no-undefined -shared `$(PERL) -MExtUtils::Embed -e ldopts` `$(PERL) -MConfig -e 'print $$Config{libs}'`
|
|
||||||
+mod_perl_la_LDFLAGS = -avoid-version -module -no-undefined -shared ${PERL_LDFLAGS}
|
|
||||||
|
|
||||||
freeswitch_la_SOURCES = freeswitch_perl.cpp mod_perl_wrap.cpp perlxsi.c
|
|
||||||
freeswitch_la_LDFLAGS = -avoid-version -module -no-undefined -shared $(LDFLAGS)
|
|
||||||
-freeswitch_la_CPPFLAGS = -w -DMULTIPLICITY `$(PERL) -MExtUtils::Embed -e ccopts` -DEMBED_PERL -I$(switch_srcdir)/libs/libteletone/src/
|
|
||||||
+freeswitch_la_CPPFLAGS = ${PERL_CFLAGS} -I$(switch_srcdir)/libs/libteletone/src/
|
|
||||||
+
|
|
||||||
reswig: swigclean mod_perl_wrap.cpp
|
|
||||||
|
|
||||||
swigclean: clean
|
|
|
@ -1,20 +0,0 @@
|
||||||
--- a/src/switch_rtp.c
|
|
||||||
+++ b/src/switch_rtp.c
|
|
||||||
@@ -1535,7 +1535,7 @@ static void send_fir(switch_rtp_t *rtp_s
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
-#ifdef ENABLE_SRTP
|
|
||||||
+#ifdef ENABLE_ZRTP
|
|
||||||
end:
|
|
||||||
#endif
|
|
||||||
|
|
||||||
@@ -1630,7 +1630,7 @@ static void send_pli(switch_rtp_t *rtp_s
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
-#ifdef ENABLE_SRTP
|
|
||||||
+#ifdef ENABLE_ZRTP
|
|
||||||
end:
|
|
||||||
#endif
|
|
||||||
return;
|
|
97
net/freeswitch/patches/uClibc/build-config-erlang_m4.patch
Normal file
97
net/freeswitch/patches/uClibc/build-config-erlang_m4.patch
Normal file
|
@ -0,0 +1,97 @@
|
||||||
|
--- a/build/config/erlang.m4
|
||||||
|
+++ b/build/config/erlang.m4
|
||||||
|
@@ -1,6 +1,6 @@
|
||||||
|
AC_DEFUN([CHECK_ERLANG], [
|
||||||
|
#
|
||||||
|
-# Erlang checks for mod_erlang_event
|
||||||
|
+# Erlang check
|
||||||
|
#
|
||||||
|
AC_ARG_WITH(
|
||||||
|
[erlang],
|
||||||
|
@@ -20,22 +20,23 @@ then
|
||||||
|
if test ! -x "$with_erlang" ; then
|
||||||
|
AC_MSG_ERROR([Specified erlang does not exist or is not executable: $with_erlang])
|
||||||
|
fi
|
||||||
|
- AC_MSG_RESULT([$with_erlang])
|
||||||
|
- AC_SUBST([ERLANG], ["$with_erlang"])
|
||||||
|
+ AC_MSG_RESULT(["$with_erlang/bin/erl"])
|
||||||
|
+ AC_SUBST([ERL],["$with_erlang/bin/erl"])
|
||||||
|
else
|
||||||
|
- AC_PATH_PROG([ERLANG], ["erl"], ["no"], ["$PATH:/usr/bin:/usr/local/bin"])
|
||||||
|
+ AC_ERLANG_NEED_ERL(["$with_erlang/bin"])
|
||||||
|
fi
|
||||||
|
|
||||||
|
- if test "$ERLANG" != "no" ; then
|
||||||
|
+ if test "$ERL" != "no" ; then
|
||||||
|
AC_MSG_CHECKING([erlang version])
|
||||||
|
- ERLANG_VER="`$ERLANG -version 2>&1 | cut -d' ' -f6`"
|
||||||
|
+ ERLANG_VER="`$ERL -version 2>&1 | cut -d' ' -f6`"
|
||||||
|
|
||||||
|
if test -z "$ERLANG_VER" ; then
|
||||||
|
AC_MSG_ERROR([Unable to detect erlang version])
|
||||||
|
+ else
|
||||||
|
+ AC_MSG_RESULT([$ERLANG_VER])
|
||||||
|
fi
|
||||||
|
- AC_MSG_RESULT([$ERLANG_VER])
|
||||||
|
|
||||||
|
- ERLANG_LIBDIR=`$ERLANG -noshell -eval 'io:format("~n~s/lib~n", [[code:lib_dir("erl_interface")]]).' -s erlang halt | tail -n 1`
|
||||||
|
+ ERLANG_LIBDIR=`$ERL -noshell -eval 'io:format("~n~s/lib~n", [[code:lib_dir("erl_interface")]]).' -s erlang halt | tail -n 1`
|
||||||
|
AC_MSG_CHECKING([erlang libdir])
|
||||||
|
if test -z "`echo $ERLANG_LIBDIR`" ; then
|
||||||
|
AC_MSG_ERROR([failed])
|
||||||
|
@@ -43,9 +44,16 @@ then
|
||||||
|
ERLANG_LDFLAGS="-L$ERLANG_LIBDIR $ERLANG_LDFLAGS"
|
||||||
|
LIBS="-L$ERLANG_LIBDIR $LIBS"
|
||||||
|
fi
|
||||||
|
+
|
||||||
|
+ #
|
||||||
|
+ # Don't use the above ERLANG_LDFLAGS
|
||||||
|
+ #
|
||||||
|
+ ERLANG_LIBDIR="${STAGING_DIR}/usr/lib"
|
||||||
|
+ ERLANG_LDFLAGS="-L$ERLANG_LIBDIR"
|
||||||
|
+ LIBS="-L$ERLANG_LIBDIR $LIBS"
|
||||||
|
AC_MSG_RESULT([$ERLANG_LIBDIR])
|
||||||
|
|
||||||
|
- ERLANG_INCDIR=`$ERLANG -noshell -eval 'io:format("~n~s/include~n", [[code:lib_dir("erl_interface")]]).' -s erlang halt | tail -n 1`
|
||||||
|
+ ERLANG_INCDIR=`$ERL -noshell -eval 'io:format("~n~s/include~n", [[code:lib_dir("erl_interface")]]).' -s erlang halt | tail -n 1`
|
||||||
|
AC_MSG_CHECKING([erlang incdir])
|
||||||
|
if test -z "`echo $ERLANG_INCDIR`" ; then
|
||||||
|
AC_MSG_ERROR([failed])
|
||||||
|
@@ -59,10 +67,11 @@ then
|
||||||
|
|
||||||
|
ERLANG_LIB="ei"
|
||||||
|
|
||||||
|
- # check liei
|
||||||
|
+ # check libei
|
||||||
|
AC_CHECK_LIB([$ERLANG_LIB], [ei_encode_version], [has_libei="yes"], [has_libei="no"])
|
||||||
|
# maybe someday ei will actually expose this?
|
||||||
|
- AC_CHECK_LIB([$ERLANG_LIB], [ei_link_unlink], [ERLANG_CFLAGS="$ERLANG_CFLAGS -DEI_LINK_UNLINK"])
|
||||||
|
+ # until then, we comment it out
|
||||||
|
+ #AC_CHECK_LIB([$ERLANG_LIB], [ei_link_unlink], [ERLANG_CFLAGS="$ERLANG_CFLAGS -DEI_LINK_UNLINK"])
|
||||||
|
|
||||||
|
if test "$has_libei" = "no" ; then
|
||||||
|
AS_IF([test "$with_erlang" = "try"],
|
||||||
|
@@ -76,7 +85,7 @@ then
|
||||||
|
)
|
||||||
|
else
|
||||||
|
ERLANG_LDFLAGS="$ERLANG_LDFLAGS -lei"
|
||||||
|
- AC_MSG_NOTICE([Your erlang seems OK, do not forget to enable mod_erlang_event in modules.conf])
|
||||||
|
+ AC_MSG_NOTICE([Your erlang seems OK. You can now use ErLang in your codes.])
|
||||||
|
AC_SUBST([ERLANG_CFLAGS], [$ERLANG_CFLAGS])
|
||||||
|
AC_SUBST([ERLANG_LDFLAGS], [$ERLANG_LDFLAGS])
|
||||||
|
AM_CONDITIONAL([HAVE_ERLANG],[true])
|
||||||
|
@@ -87,12 +96,12 @@ then
|
||||||
|
|
||||||
|
else
|
||||||
|
AS_IF([test "$with_erlang" = "try"],
|
||||||
|
- [AC_MSG_WARN([Could not find erlang, mod_erlang_event will not build, use --with-erlang to specify the location])],
|
||||||
|
+ [AC_MSG_WARN([Could not find erlang, codes depend on erlang will not build, use --with-erlang to specify the location])],
|
||||||
|
[AC_MSG_ERROR([Could not find erlang, use --with-erlang to specify the location])]
|
||||||
|
)
|
||||||
|
fi
|
||||||
|
else
|
||||||
|
- AC_MSG_WARN([erlang support disabled, building mod_erlang_event will fail!])
|
||||||
|
+ AC_MSG_WARN([erlang support disabled!])
|
||||||
|
fi
|
||||||
|
|
||||||
|
])
|
10
net/freeswitch/patches/uClibc/build-modules_conf_in.patch
Normal file
10
net/freeswitch/patches/uClibc/build-modules_conf_in.patch
Normal file
|
@ -0,0 +1,10 @@
|
||||||
|
--- a/build/modules.conf.in
|
||||||
|
+++ b/build/modules.conf.in
|
||||||
|
@@ -39,6 +39,7 @@ applications/mod_httapi
|
||||||
|
#applications/mod_rad_auth
|
||||||
|
#applications/mod_redis
|
||||||
|
#applications/mod_rss
|
||||||
|
+#applications/mod_skel
|
||||||
|
applications/mod_sms
|
||||||
|
#applications/mod_snapshot
|
||||||
|
#applications/mod_snom
|
10
net/freeswitch/patches/uClibc/build-openwrt_rules.mk.patch
Normal file
10
net/freeswitch/patches/uClibc/build-openwrt_rules.mk.patch
Normal file
|
@ -0,0 +1,10 @@
|
||||||
|
--- /dev/null
|
||||||
|
+++ b/build/openwrt_rules.mk
|
||||||
|
@@ -0,0 +1,7 @@
|
||||||
|
+OPENWRT_DIR=$(shell (cd $(BASE)/../../..;pwd))
|
||||||
|
+STAGING_PREFIX=$(OPENWRT_DIR)/staging_dir/host
|
||||||
|
+STAGING_DIR=$(OPENWRT_DIR)/staging_dir/$(shell (cd $(BASE)/..;basename `pwd`))
|
||||||
|
+ARCH="$(shell grep CONFIG_ARCH $(OPENWRT_DIR)/.config|cut -d= -d'"' -f2)"
|
||||||
|
+GNU_TARGET_NAME=$(ARCH)-openwrt-linux
|
||||||
|
+
|
||||||
|
+include $(OPENWRT_DIR)/rules.mk
|
65
net/freeswitch/patches/uClibc/configure_ac.patch
Normal file
65
net/freeswitch/patches/uClibc/configure_ac.patch
Normal file
|
@ -0,0 +1,65 @@
|
||||||
|
--- a/configure.ac
|
||||||
|
+++ b/configure.ac
|
||||||
|
@@ -254,7 +254,7 @@ AX_COMPILER_VENDOR
|
||||||
|
if test "x${cross_compiling}" = "xyes"; then
|
||||||
|
CC_FOR_BUILD=${CC_FOR_BUILD-gcc}
|
||||||
|
case "$host" in
|
||||||
|
- arm*-linux-gnueabi*|arm*-*-linux-gnueabi*)
|
||||||
|
+ arm*-linux-gnueabi*|arm*-*-linux-*)
|
||||||
|
# spandsp modem
|
||||||
|
ac_cv_file__dev_ptmx=yes
|
||||||
|
# libjs
|
||||||
|
@@ -273,7 +273,7 @@ if test "x${cross_compiling}" = "xyes";
|
||||||
|
export apr_cv_mutex_recursive=yes
|
||||||
|
export ac_cv_func_pthread_rwlock_init=yes
|
||||||
|
export apr_cv_type_rwlock_t=yes
|
||||||
|
- export apr_cv_process_shared_works=yes
|
||||||
|
+ export apr_cv_process_shared_works=no
|
||||||
|
export apr_cv_mutex_robust_shared=yes
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
@@ -405,9 +405,6 @@ elif test "x${ax_cv_c_compiler_vendor}"
|
||||||
|
elif test "x${ax_cv_c_compiler_vendor}" = "xgnu" ; then
|
||||||
|
APR_ADDTO(SWITCH_AM_CFLAGS, -fPIC)
|
||||||
|
APR_ADDTO(SWITCH_AM_CXXFLAGS, -fPIC)
|
||||||
|
- if test "$ac_cv_gcc_supports_w_no_unused_result" = yes; then
|
||||||
|
- APR_ADDTO(SWITCH_AM_CFLAGS, -Werror)
|
||||||
|
- fi
|
||||||
|
if test "${enable_64}" = "yes"; then
|
||||||
|
case "$host" in
|
||||||
|
*darwin*)
|
||||||
|
@@ -901,7 +898,6 @@ AC_CHECK_LIB(pthread, pthread_setschedpa
|
||||||
|
|
||||||
|
AC_CHECK_FUNC(socket, , AC_CHECK_LIB(socket, socket))
|
||||||
|
|
||||||
|
-AC_CHECK_FILE(/dev/ptmx, [AC_DEFINE(HAVE_DEV_PTMX, 1, [Define if you have /dev/ptmx])])
|
||||||
|
AC_CHECK_LIB(util, openpty, [AC_DEFINE(HAVE_OPENPTY, 1, [Define if you have openpty()])])
|
||||||
|
|
||||||
|
AC_CHECK_MEMBERS([struct tm.tm_gmtoff],,,[
|
||||||
|
@@ -1478,14 +1474,14 @@ AM_CONDITIONAL([HAVE_MYSQL],[test "$foun
|
||||||
|
# perl checks
|
||||||
|
#
|
||||||
|
|
||||||
|
-AC_CHECK_PROG(PERL,perl,[ac_cv_have_perl=yes],[ac_cv_have_perl=no])
|
||||||
|
+AC_CHECK_PROG(PERL,[perl],[ac_cv_have_perl=yes],[ac_cv_have_perl=no],[${STAGING_DIR}/../host/usr/bin])
|
||||||
|
+PERL=$as_dir/$ac_word$ac_exec_ext
|
||||||
|
|
||||||
|
# -a "x$ac_cv_have_EXTERN_h" != "xno"
|
||||||
|
|
||||||
|
if test "x$ac_cv_have_perl" != "xno"; then
|
||||||
|
- PERL=perl
|
||||||
|
- PERL_SITEDIR="`$PERL -MConfig -e 'print $Config{archlib}'`"
|
||||||
|
- PERL_LIBDIR="-L`$PERL -MConfig -e 'print $Config{archlib}'`/CORE"
|
||||||
|
+ PERL_SITEDIR="`$PERL -MConfig -e 'print $Config{archlibexp}'`"
|
||||||
|
+ PERL_LIBDIR="-L`$PERL -MConfig -e 'print $Config{archlibexp}'`/CORE"
|
||||||
|
PERL_LIBS="`$PERL -MConfig -e 'print $Config{libs}'`"
|
||||||
|
PERL_CFLAGS="-w -DMULTIPLICITY `$PERL -MExtUtils::Embed -e ccopts | sed -e 's|-arch x86_64 -arch i386||'` -DEMBED_PERL"
|
||||||
|
PERL_LDFLAGS="`$PERL -MExtUtils::Embed -e ldopts| sed -e 's|-arch x86_64 -arch i386||'`"
|
||||||
|
@@ -1502,6 +1498,7 @@ if test "x$ac_cv_have_perl" != "xno"; th
|
||||||
|
AC_CHECK_LIB([perl], [perl_alloc], ac_cv_use_libperl=yes, ac_cv_use_libperl=no)
|
||||||
|
LDFLAGS="$save_LDFLAGS"
|
||||||
|
|
||||||
|
+ AC_SUBST(PERL)
|
||||||
|
AC_SUBST(PERL_SITEDIR)
|
||||||
|
AC_SUBST(PERL_LIBDIR)
|
||||||
|
AC_SUBST(PERL_LIBS)
|
15
net/freeswitch/patches/uClibc/libs-apr-configure_ac.patch
Normal file
15
net/freeswitch/patches/uClibc/libs-apr-configure_ac.patch
Normal file
|
@ -0,0 +1,15 @@
|
||||||
|
--- a/libs/apr/configure.ac
|
||||||
|
+++ b/libs/apr/configure.ac
|
||||||
|
@@ -1956,7 +1956,11 @@ fi
|
||||||
|
|
||||||
|
APR_CHECK_TCP_NODELAY_INHERITED
|
||||||
|
APR_CHECK_O_NONBLOCK_INHERITED
|
||||||
|
-APR_CHECK_TCP_NODELAY_WITH_CORK
|
||||||
|
+
|
||||||
|
+dnl Check TCP_NODELAY_WITH_CORK ONLY when NOT cross compiling
|
||||||
|
+if test "$cross_compiling" != yes; then
|
||||||
|
+ APR_CHECK_TCP_NODELAY_WITH_CORK
|
||||||
|
+fi
|
||||||
|
|
||||||
|
# Look for a way of corking TCP...
|
||||||
|
APR_CHECK_DEFINE(TCP_CORK, netinet/tcp.h)
|
|
@ -0,0 +1,8 @@
|
||||||
|
--- a/libs/apr-util/configure.gnu
|
||||||
|
+++ b/libs/apr-util/configure.gnu
|
||||||
|
@@ -1,4 +1,4 @@
|
||||||
|
#! /bin/sh
|
||||||
|
srcpath=$(dirname $0 2>/dev/null ) || srcpath="."
|
||||||
|
-$srcpath/configure "$@" --with-apr=../apr --disable-shared --with-pic --without-sqlite2 --without-sqlite3 --with-expat=builtin
|
||||||
|
+$srcpath/configure "$@" --with-apr=../apr --disable-shared --with-expat=builtin
|
||||||
|
|
13
net/freeswitch/patches/uClibc/libs-srtp-configure_ac.patch
Normal file
13
net/freeswitch/patches/uClibc/libs-srtp-configure_ac.patch
Normal file
|
@ -0,0 +1,13 @@
|
||||||
|
--- a/libs/srtp/configure.ac
|
||||||
|
+++ b/libs/srtp/configure.ac
|
||||||
|
@@ -130,10 +130,6 @@ if test "$enable_kernel_linux" = "yes";
|
||||||
|
fi
|
||||||
|
AC_MSG_RESULT($enable_kernel_linux)
|
||||||
|
|
||||||
|
-dnl Check for /dev/urandom
|
||||||
|
-AC_CHECK_FILE(/dev/urandom, DEV_URANDOM=/dev/urandom,
|
||||||
|
- [AC_CHECK_FILE(/dev/random, DEV_URANDOM=/dev/random)])
|
||||||
|
-
|
||||||
|
dnl Checks for header files.
|
||||||
|
AC_HEADER_STDC
|
||||||
|
AC_CHECK_HEADERS(stdlib.h)
|
|
@ -9,7 +9,7 @@ include $(TOPDIR)/rules.mk
|
||||||
|
|
||||||
PKG_NAME:=kamailio3
|
PKG_NAME:=kamailio3
|
||||||
PKG_VERSION:=3.3.7
|
PKG_VERSION:=3.3.7
|
||||||
PKG_RELEASE:=9
|
PKG_RELEASE:=10
|
||||||
|
|
||||||
PKG_SOURCE_URL:=http://www.kamailio.org/pub/kamailio/$(PKG_VERSION)/src/
|
PKG_SOURCE_URL:=http://www.kamailio.org/pub/kamailio/$(PKG_VERSION)/src/
|
||||||
PKG_SOURCE:=kamailio-$(PKG_VERSION)$(PKG_VARIANT)_src.tar.gz
|
PKG_SOURCE:=kamailio-$(PKG_VERSION)$(PKG_VARIANT)_src.tar.gz
|
||||||
|
|
22
net/kamailio-3.x/patches/150-CVE-2016-2385.patch
Normal file
22
net/kamailio-3.x/patches/150-CVE-2016-2385.patch
Normal file
|
@ -0,0 +1,22 @@
|
||||||
|
--- a/modules_k/seas/encode_msg.c
|
||||||
|
+++ b/modules_k/seas/encode_msg.c
|
||||||
|
@@ -158,6 +158,7 @@ int encode_msg(struct sip_msg *msg,char
|
||||||
|
|
||||||
|
if(len < MAX_ENCODED_MSG + MAX_MESSAGE_LEN)
|
||||||
|
return -1;
|
||||||
|
+
|
||||||
|
if(parse_headers(msg,HDR_EOH_F,0)<0){
|
||||||
|
myerror="in parse_headers";
|
||||||
|
goto error;
|
||||||
|
@@ -266,6 +267,11 @@ int encode_msg(struct sip_msg *msg,char
|
||||||
|
/*j+=k;*/
|
||||||
|
/*pkg_free(payload2);*/
|
||||||
|
/*now we copy the actual message after the headers-meta-section*/
|
||||||
|
+
|
||||||
|
+ if(len < j + msg->len + 1) {
|
||||||
|
+ LM_ERR("not enough space to encode sip message\n");
|
||||||
|
+ return -1;
|
||||||
|
+ }
|
||||||
|
memcpy(&payload[j],msg->buf,msg->len);
|
||||||
|
LM_DBG("msglen = %d,msg starts at %d\n",msg->len,j);
|
||||||
|
j=htons(j);
|
Some files were not shown because too many files have changed in this diff Show more
Loading…
Reference in a new issue