Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Dahdi 202206 #25852

Closed
wants to merge 3 commits into from
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Jump to
Jump to file
Failed to load files.
Diff view
Diff view
70 changes: 70 additions & 0 deletions net-misc/dahdi-tools/dahdi-tools-3.1.0-r3.ebuild
@@ -0,0 +1,70 @@
# Copyright 1999-2022 Gentoo Authors
# Distributed under the terms of the GNU General Public License v2

EAPI=7

inherit autotools bash-completion-r1 perl-functions udev

DESCRIPTION="Userspace tools to configure the kernel modules from net-misc/dahdi"
HOMEPAGE="https://www.asterisk.org"
SRC_URI="https://downloads.asterisk.org/pub/telephony/${PN}/releases/${P}.tar.gz"

LICENSE="LGPL-2.1"
SLOT="0"
KEYWORDS="~amd64 ~arm ~arm64 ~ppc ~ppc64 ~x86"
IUSE="ppp"
PATCHES=(
"${FILESDIR}/dahdi-nondigium-blacklist.patch"
"${FILESDIR}/dahdi-tools-3.1.0-parallel-make-no-config.patch"
"${FILESDIR}/dahdi-tools-3.1.0-fno-common.patch"
"${FILESDIR}/dahdi-tools-3.1.0-execinfo.patch"
"${FILESDIR}/dahdi-tools-3.1.0-cplusplusexternc.patch"
)

DEPEND="dev-libs/newt
net-misc/dahdi
sys-kernel/linux-headers
virtual/libusb:0
ppp? ( net-dialup/ppp:= )"
RDEPEND="${DEPEND}
dev-lang/perl:=
dev-perl/CGI"
BDEPEND="dev-lang/perl
sys-apps/file"

src_prepare() {
default
eautoreconf
}

src_configure() {
econf $(use_with ppp) --with-perllib="$(perl_get_vendorlib)"
sed -re 's/ -Werror($|[[:space:]])//' -i xpp/oct612x/Makefile.in || die "sed to eliminate -Werror failed."
sed -re '/[[:space:]]*-Werror[[:space:]]*\\$/ d' -i xpp/xtalk/Makefile || die "sed to eliminate -Werror failed."
}

src_install() {
local bashcompdir="$(get_bashcompdir)"
local bashcmd bashcmdtarget

emake DESTDIR="${ED}" bashcompdir="${bashcompdir}" udevrulesdir="$(get_udevdir)/rules.d" install
emake DESTDIR="${ED}" install-config

dosbin patgen pattest patlooptest hdlcstress hdlctest hdlcgen hdlcverify timertest

# install init scripts
newinitd "${FILESDIR}"/dahdi.init2 dahdi
newinitd "${FILESDIR}"/dahdi-autoconf.init-3.1.0-r3 dahdi-autoconf
newconfd "${FILESDIR}"/dahdi-autoconf.conf2 dahdi-autoconf

bashcomp_alias dahdi $(sed -nre 's/^complete -F .* //p' "${ED}${bashcompdir}/dahdi" ||
die "Error parsing dahdi bash completion file for commands")

rm "${ED}"/usr/$(get_libdir)/libtonezone.a || die "Unable to remove static libs from install."
# Delete *if* the libtool file exists, bug #778380
find "${ED}" -name '*.la' -delete || die
}

pkg_postinst() {
udev_reload
}
271 changes: 271 additions & 0 deletions net-misc/dahdi-tools/files/dahdi-autoconf.init-3.1.0-r3
@@ -0,0 +1,271 @@
#!/sbin/openrc-run
# Copyright 1999-2011 Ultimate Linux Solutions CC
# Distributed under the terms of the GNU General Public License v2

depend() {
before dahdi
}

dahdi_load_modules() {
local hwlist loc status mod mod_vname pciid desc

hwlist=$(/usr/sbin/dahdi_hardware)

if [ -z "${hwlist}" ]; then
einfo "No digium hardware found."
ebegin "Loading module dahdi_dummy"
/sbin/modprobe dahdi_dummy
eend $?
return
fi

echo "${hwlist}" | while read loc mod pciid desc; do
status="${mod:${#mod}-1:1}"
mod="${mod%[+-]}"
mod_vname="mod_${mod}"

einfo "Found $desc at $loc (module: $mod)"

if [ "${status}" = "-" -a "${!mod_vname-notloaded}" = "notloaded" ]; then
ebegin "Loading module $mod"
/sbin/modprobe $mod
eend

[ $? -eq 0 ] && eval "$mod_vname=loaded"
fi
done
}

dahdi_module_unload() {
local mod=$1 s
[ -d /sys/module/${mod} ] || return 0

for s in $(find /sys/module/${mod}/holders -type l); do
dahdi_module_unload $(basename $s)
done

ebegin "Removing dahdi module: $mod"
/sbin/rmmod $mod
eend $?
}

dahdi_gen_fxo_config() {
local port=$1

echo "fxs${DAHDI_FXO_SIGNALLING-ks}=${port}"
[ "${DAHDI_FXO_ECHOCAN-yes}" = yes ] && echo "echocanceller=${DAHDI_ECHOCAN-mg2},${port}"
}

dahdi_gen_fxs_config() {
local port=$1

echo "fxo${DAHDI_FXO_SIGNALLING-ks}=${port}"
[ "${DAHDI_FXS_ECHOCAN-yes}" = yes ] && echo "echocanceller=${DAHDI_ECHOCAN-mg2},${port}"
}

dahdi_gen_bri_te_config() {
span=$1
port=$2
basechan=$3

echo "span=${span},${port},0,${DAHDI_BRI_FRAMING-CSS},${DAHDI_BRI_CODING-AMI}"
echo "bchan=${basechan}-$(( basechan + 1 ))"
echo "hardhdlc=$(( basechan + 2 ))"
[ "${DAHDI_BRI_TE_ECHOCAN-yes}" = yes ] && echo "echocanceller=${DAHDI_ECHOCAN-mg2},${basechan}-$(( basechan + 1 ))"
}

dahdi_gen_bri_nt_config() {
span=$1
port=$2
basechan=$3

echo "span=${span},0,0,${DAHDI_BRI_FRAMING-CSS},${DAHDI_BRI_CODING-AMI}"
echo "bchan=${basechan}-$(( basechan + 1 ))"
echo "hardhdlc=$(( basechan + 2 ))"
[ "${DAHDI_BRI_NT_ECHOCAN-yes}" = yes ] && echo "echocanceller=${DAHDI_ECHOCAN-mg2},${basechan}-$(( basechan + 1 ))"
}

dahdi_gen_e1_cpe_config() {
span=$1
port=$2
basechan=$3

echo "span=${span},${port},0,${DAHDI_E1_FRAMING-CCS},${DAHDI_E1_CODING-HDB3,CRC4}"
bchans="${basechan}-$(( basechan + 14 )),$(( basechan + 16 ))-$(( basechan + 30 ))"
echo "bchan=${bchans}"
echo "dchan=$(( basechan + 15 ))"
[ "${DAHDI_E1_CPE_ECHOCAN-yes}" = yes ] && echo "echocanceller=${DAHDI_ECHOCAN-mg2},${bchans}"
}

dahdi_gen_e1_net_config() {
span=$1
port=$2
basechan=$3

echo "span=${span},0,0,${DAHDI_E1_FRAMING-CCS},${DAHDI_E1_CODING-HDB3,CRC4}"
bchans="${basechan}-$(( basechan + 14 )),$(( basechan + 16 ))-$(( basechan + 30 ))"
echo "bchan=${bchans}"
echo "dchan=$(( basechan + 15 ))"
[ "${DAHDI_E1_NET_ECHOCAN-yes}" = yes ] && echo "echocanceller=${DAHDI_ECHOCAN-mg2},${bchans}"
}

dahdi_gen_t1_cpe_config() {
span=$1
port=$2
basechan=$3

echo "span=${span},${port},0,${DAHDI_T1_FRAMING-ESF},${DAHDI_T1_CODING-B8ZS}"
bchans="${basechan}-$(( basechan + 22 ))"
echo "bchan=${bchans}"
echo "dchan=$(( basechan + 23 ))"
[ "${DAHDI_T1_CPE_ECHOCAN-yes}" = yes ] && echo "echocanceller=${DAHDI_ECHOCAN-mg2},${bchans}"
}

dahdi_gen_t1_net_config() {
span=$1
port=$2
basechan=$3

echo "span=${span},0,0,${DAHDI_T1_FRAMING-ESF},${DAHDI_T1_CODING-B8ZS}"
bchans="${basechan}-$(( basechan + 22 ))"
echo "bchan=${bchans}"
echo "dchan=$(( basechan + 23 ))"
[ "${DAHDI_T1_NET_ECHOCAN-yes}" = yes ] && echo "echocanceller=${DAHDI_ECHOCAN-mg2},${bchans}"
}

dahdi_conf_span() {
local span=$1
local type=$2
local desc=$3
local port=$4
local basechan=$5
local vname="PRI_SPAN_${span}_NET"
local cfunc="dahdi_gen_"

# Analog we need to deal with on a port-by-port basis.
[ "${type}" = "analog" ] && return 0

echo ""
echo "# ${desc}"

case "${type}" in
digital-TE)
cfunc+="bri_te"
;;
digital-NT)
cfunc+="bri_nt"
;;
digital-[TE]1)
cfunc+="$(echo "${type##*-}" | tr 'TE' 'te')"
# Use CPE by default. Unfortunately there is no easy
# way to detect CPE vs NET as far as I know and specifying
# in a config that you want NET mode seems the sanest way.
if yesno "${vname}"; then
cfunc+="_net"
else
cfunc+="_cpe"
fi
;;
*)
echo "# Don't know how to configure this (type=${type})."
echo "# Please file a bug on bugs.gentoo.org and add jaco@uls.co.za as CC."
return 1
;;
esac

"${cfunc}_config" "${span}" "${port}" "${basechan}"
}

dahdi_gen_config() {
local type manufacturer devicetype basechan aport atype
local span=
local tfile="$(mktemp)"
local sfile="$(mktemp)"
local plocation=""
local isdnport=0

/usr/sbin/dahdi_scan > "${sfile}"
exec 3<"${sfile}"
exec 4>"${tfile}"

echo "# Automatically dahdi-autoconf generated file ($(date))." >&4
echo "# This file WILL get regenerated whenever you restart dahdi-autoconf." >&4

while read LINE <&3; do
case "$LINE" in
\[*\])
if [ -n "${span}" ]; then
ebegin "Configuring ${manufacturer} ${devicetype} (${name})"
dahdi_conf_span "${span}" "${type}" "${manufacturer} ${devicetype} (${name})" "${isdnport}" "${basechan}" >&4
eend $?
fi
span="${LINE%?}"
span="${span#?}"
;;
type=*|manufacturer=*|devicetype=*|basechan=*|name=*)
eval "${LINE%%=*}='${LINE#*=}'"
;;
location=*)
eval "${LINE%%=*}='${LINE#*=}'"
if [ "${location}" = "${plocation}" ]; then
isdnport=$(( isdnport + 1 ))
else
plocation="${location}"
isdnport=1
fi
;;
port=*)
# For analog cards only.
aport="${LINE#*=}"; aport="${aport%,*}"
atype="${LINE#*,}"
if [ "${aport}" -eq "${basechan}" ]; then
echo "" >&4
echo "# ${manufacturer} ${devicetype} (${name})" >&4
fi
case "${atype}" in
FXO)
dahdi_gen_fxo_config $aport >&4
;;
FXS)
dahdi_gen_fxs_config $aport >&4
;;
esac
;;
esac
done

if [ -n "${span}" ]; then
ebegin "Configuring ${manufacturer} ${devicetype} (${name})"
dahdi_conf_span "${span}" "${type}" "${manufacturer} ${devicetype} (${name})" "${isdnport}" "${basechan}" >&4
eend $?
fi

echo "" >&4
echo "loadzone = ${DAHDI_ZONE}" >&4
echo "defaultzone = ${DAHDI_ZONE}" >&4
echo "## END OF AUTOCONFIGURED FILE ##" >&4

exec 3<&-
exec 4<&-

rm -f "${sfile}"
[ -r /etc/dahdi/system.conf ] && mv /etc/dahdi/system.conf /etc/dahdi/system.conf.bck
mv "${tfile}" /etc/dahdi/system.conf
}

start() {
dahdi_load_modules

if [ ! -r /dev/dahdi/ctl ]; then
eerror "No DAHDI compatible cards detected."
return 1
fi

ebegin "Generating DAHDI Configuration"
dahdi_gen_config
eend $?
}

stop() {
dahdi_module_unload dahdi
}
3 changes: 2 additions & 1 deletion net-misc/dahdi/Manifest
Expand Up @@ -16,6 +16,7 @@ DIST dahdi-fw-te820-1.76.tar.gz 54303 BLAKE2B 16a70f103f890275595c1c066d05992b43
DIST dahdi-fw-vpmoct032-1.12.0.tar.gz 443985 BLAKE2B f7f1b5240dafeea42c25c19e3bd62a60398e29848d53a24d7cb3263922fc43dbdf0f9b66ba8324e9d7f37047803fd474e90102d4af876169f5597e545b98d529 SHA512 3ee8c56a7075d13a6457a5249fcffc04b2da59da94a622cb66810babf46260235492810c867479fccf343e84424c9bcc12c2d05389a52c0a56c62b138f23aeb3
DIST dahdi-fwload-vpmadt032-1.25.0.tar.gz 149360 BLAKE2B bb754b1abf794d918d1c457792a0432adc57dabf73e67868dd7a72995f2e9240a528a357427ae8602b10907c813cc50da4c35b8c060bdc7ece399f096ce6519b SHA512 3534f0bab0e142ae94b9b5c401a5c314bab43bc1ca9283600ca82b1746afa514eff6a965ccc6b48774d577beaddb12d165f66221b3b6457df68ccbcede812047
DIST dahdi-linux-3.1.0.tar.gz 1645832 BLAKE2B 27ea6b68318750639fd90f2061e2e9e128e3faa8cc195b368f7157947f5b522f86b871a3b793016945c9faaed20b38a185adafa29b2fc04019063257f578169e SHA512 440f5e44c933c609f2b3cfcf013c84bcd0c37929a43d69aac0276b11484cb890cd5939c5ac5950cad54d934d27ee6ff0b18f2bdd58477ed9be8055de107727b4
DIST gentoo-dahdi-patchset-3.1.0-r1-v2.tar.bz2 104683 BLAKE2B 6ad6ede1163baa40e0bc265af5bfba5781bc61bfcabaccb0b8579d8ea8b778a06e2acf4b3d57b5419f3ad406e32d3cbe63cea6b2ee5960644e1458636462decd SHA512 b3acfb0e614073ce8e3a009f5685959f6c226607ba6c50a4657ed1dda808345e745e13005de95e61ac1ed47a2c6da3ce678c5881f5eff945434b8b79551dd304
DIST gentoo-dahdi-patches-3.1.0-r4.tar.bz2 8631 BLAKE2B 683cfac178bb2d15053396d45ed6c4b0511952165b3bf4907f8f95737d1b36eab2d7cd7c288924602539779d4251d9ef5d7c369c8c600fa27862c173f4aa1506 SHA512 7b4bca16bd0cb9ee9f1d44fedb1077436cd951c3c92693c5b8187e0d2292dc236db89cb2304f80cc287c83ffbf4bd1c8a413c4d508b0493a6be1e3051f2af157
DIST gentoo-dahdi-patchset-3.1.0-r3.tar.bz2 107738 BLAKE2B 9c6a846f744753ae133c24425224675fdbeab5c1b1bc70dd621c615af2f13eec6eb4981ec160c813be62d9d69cd8af6b2cd517005399e24f78fa30da5e20c464 SHA512 75d6562783adc5584966cba38d92a7d1aba3f448cac486be454f9810bb8380009a71a56261a0820a5eb5e13a2c0b49768c1d6adc2310f0be2133140e9e9ae3de
DIST gentoo-dahdi-sources-3.1.0-r4.tar.bz2 87720 BLAKE2B 676a8332b0d68155dc2b24a49f01abd21521c9aeecdc930b2fbf1fcbcda568b8162d9d34a5876b0dcd5510abc72e933a112598863df745a44b54a9bc928c6cb8 SHA512 d7f77dcb636e1346bbe18ed780a3df3cab064d12e50f01528a102f9fbadb11661218b8e00e73792003cb7d8440fab58011900244d7555e33a4c26c8164f61762
DIST jnet-dahdi-drivers-1.0.14.tar.gz 64860 BLAKE2B c8bbb007cd1a76d02b758af35d1d6a26d5617018ad1de8c69dd9bdf7d781d66b85031706efe55edb32eec1d00f3877fe8a2edd4f9899f367824875cd5fe93984 SHA512 419352897d39bae6b51ee302723de6ca3c8041546a1273fa0691cf169e16f37fc730f3033fed4e5f564dce6dcc097e93f609208af8c38d03b9aee96b95037d66