Files
Mingli Yu 2fa611a12f freediameter: update the old sctp api check
The initial sctp api check for freediameter as below:

===
commit d3c5e991cb532ea09684d69fb4d0d58e9bc39a0c
Author: Sebastien Decugis <sdecugis@freediameter.net>
Date:   Mon Jun 3 12:05:37 2013 +0800

    Add some compliancy to RFC6458. Not tested however as Ubuntu does not support this yet

 [snip]
 +/* Use old draft-ietf-tsvwg-sctpsocket-17 API ? If not defined, RFC6458 API will be used */
 +/* #define OLD_SCTP_SOCKET_API */
 +
 +/* Automatically fallback to old API if some of the new symbols are not defined */
 +#if (!defined(SCTP_CONNECTX_4_ARGS) || (!defined(SCTP_RECVRCVINFO)) || (!defined(SCTP_SNDINFO)))
 +# define OLD_SCTP_SOCKET_API
 +#endif
===

SCTP_RECVRCVINFO is defined in <linux/sctp.h>,
but <linux/sctp.h> is't included in the source code
previouly. So defined(SCTP_RECVRCVINFO) can be 0
and it makes old sctp socket api definition in
effect as below:
 # define OLD_SCTP_SOCKET_API

After lksctp-tools upgrade to 1.0.18, there is below
commit introduced in lksctp-tools git:
===
commit 3c8bd0d26b64611c690f33f5802c734b0642c1d8
Author: Marcelo Ricardo Leitner <marcelo.leitner@gmail.com>
Date:   Tue Apr 17 20:17:14 2018 -0300

    sctp.h: make use kernel UAPI header

    and with that, remove tons of duplicated declarations. These were
    lagging behind the kernel header, which is always the most updated one,
    and as the library is intended to be run only on Linux, there is no
    reason that we cannot re-use what is in there.

    That said, this patch drops all duplicated declarations and includes
    linux/sctp.h to bring them into lksctp-tools.

    Signed-off-by: Marcelo Ricardo Leitner <marcelo.leitner@gmail.com>

 [snip]
 #include <stdint.h>
 #include <linux/types.h>
 #include <sys/socket.h>
+#include <linux/sctp.h>
 [snip]
===

And above logic make defined(SCTP_RECVRCVINFO) to
be 1 and the old sctp socket api macro as below
won't be defined.
 # define OLD_SCTP_SOCKET_API

And it encouters below build error:
| /build/freediameter/1.2.1-r0/freeDiameter-1.2.1/libfdcore/sctp.c:1262:9: error: 'SCTP_SEND_FAILED_EVENT' undeclared (first use in this function); did you mean 'SCTP_SEND_FAILED'?
    case SCTP_SEND_FAILED_EVENT:
         ^~~~~~~~~~~~~~~~~~~~~~
         SCTP_SEND_FAILED
| /build/freediameter/1.2.1-r0/freeDiameter-1.2.1/libfdcore/sctp.c:1262:9: note: each undeclared identifier is reported only once for each function it appears in
| /build/freediameter/1.2.1-r0/freeDiameter-1.2.1/libfdcore/sctp.c:1274:9: error: 'SCTP_NOTIFICATIONS_STOPPED_EVENT' undeclared (first use in this function); did you mean 'SCTP_AUTHENTICATION_EVENT'?
    case SCTP_NOTIFICATIONS_STOPPED_EVENT:

Update the old sctp socket api check to fix
the above build error.

Signed-off-by: Mingli Yu <Mingli.Yu@windriver.com>
Signed-off-by: Khem Raj <raj.khem@gmail.com>
2018-09-04 11:55:21 -07:00

140 lines
5.1 KiB
BlitzBasic

SUMMARY = "An open source implementation of the diameter protocol"
DESCRIPTION = "\
freeDiameter is an open source Diameter protocol implementation \
(RFC3588). It provides an extensible platform for deploying a \
Diameter network for your Authentication, Authorization and \
Accounting needs."
HOMEPAGE = "http://www.freediameter.net"
DEPENDS = "flex bison cmake-native libgcrypt gnutls libidn lksctp-tools virtual/kernel bison-native"
PACKAGE_ARCH = "${MACHINE_ARCH}"
fd_pkgname = "freeDiameter"
SRC_URI = "\
http://www.freediameter.net/hg/${fd_pkgname}/archive/${PV}.tar.gz;downloadfilename=${fd_pkgname}-${PV}.tar.gz \
file://Replace-murmurhash-algorithm-with-Robert-Jenkin-s-ha.patch \
file://freediameter.service \
file://freediameter.init \
${@bb.utils.contains('DISTRO_FEATURES', 'ptest', 'file://install_test.patch file://run-ptest file://pass-ptest-env.patch', '', d)} \
file://freeDiameter.conf \
file://0001-libfdcore-sctp.c-update-the-old-sctp-api-check.patch \
"
SRC_URI[md5sum] = "61b1062aa144b5f12eed514611e6d697"
SRC_URI[sha256sum] = "bd7f105542e9903e776aa006c6931c1f5d3d477cb59af33a9162422efa477097"
S = "${WORKDIR}/${fd_pkgname}-${PV}"
LICENSE = "BSD"
LIC_FILES_CHKSUM = "file://LICENSE;md5=892b2ed6ae815488a08416ff7ee74a35"
PTEST_PATH = "${libdir}/${fd_pkgname}/ptest"
inherit cmake pkgconfig update-rc.d ptest systemd
EXTRA_OECMAKE = " \
-DDEFAULT_CONF_PATH:PATH=${sysconfdir}/${fd_pkgname} \
-DBUILD_DBG_MONITOR:BOOL=ON \
-DBUILD_TEST_APP:BOOL=ON \
-DBUILD_TESTING:BOOL=ON \
-DBUILD_APP_RADGW:BOOL=ON \
-DBUILD_APP_REDIRECT:BOOL=ON \
-DBUILD_TEST_ACCT:BOOL=ON \
-DBUILD_TEST_NETEMUL:BOOL=ON \
-DBUILD_TEST_RT_ANY:BOOL=ON \
-DINSTALL_LIBRARY_SUFFIX:PATH=${baselib} \
-DINSTALL_EXTENSIONS_SUFFIX:PATH=${baselib}/${fd_pkgname} \
-DINSTALL_TEST_SUFFIX:PATH=${PTEST_PATH}-tests \
-DCMAKE_SKIP_RPATH:BOOL=ON \
"
# INSTALL_LIBRARY_SUFFIX is relative to CMAKE_INSTALL_PREFIX
# specify it on cmd line will fix the SET bug in CMakeList.txt
# -DBUILD_APP_ACCT:BOOL=ON This needs POSTGRESQL support
# -DBUILD_APP_DIAMEAP:BOOL=ON -DBUILD_APP_SIP:BOOL=ON -DBUILD_TEST_SIP:BOOL=ON
# These need MySQL support
# -DBUILD_DBG_INTERACTIVE:BOOL=ON This needs SWIG support
# -DALL_EXTENSIONS=ON will enable all
FD_KEY ?="${BPN}.key"
FD_PEM ?= "${BPN}.pem"
FD_CA ?= "${BPN}.pem"
FD_DH_PEM ?= "${BPN}-dh.pem"
FD_HOSTNAME ?= "${MACHINE}"
FD_REALM ?= "openembedded.org"
do_install_append() {
# install the sample configuration files
install -d -m 0755 ${D}${sysconfdir}/${fd_pkgname}
for i in ${S}/doc/*.conf.sample; do
install -m 0644 $i ${D}${sysconfdir}/${fd_pkgname}/
done
mv ${D}${sysconfdir}/${fd_pkgname}/freediameter.conf.sample \
${D}${sysconfdir}/${fd_pkgname}/freeDiameter.conf.sample
install -d ${D}${sysconfdir}/freeDiameter
install ${WORKDIR}/freeDiameter.conf ${D}${sysconfdir}/${fd_pkgname}/freeDiameter.conf
# install daemon init related files
install -d -m 0755 ${D}${sysconfdir}/default
install -d -m 0755 ${D}${sysconfdir}/init.d
install -m 0644 ${S}/contrib/debian/freediameter-daemon.default \
${D}${sysconfdir}/default/${BPN}
install -m 0755 ${WORKDIR}/freediameter.init ${D}${sysconfdir}/init.d/${BPN}
# install for systemd
install -d ${D}${systemd_system_unitdir}
install -m 0644 ${WORKDIR}/freediameter.service ${D}${systemd_system_unitdir}
sed -i -e 's,@BINDIR@,${bindir},g' ${D}${systemd_system_unitdir}/*.service
cat >> ${D}${sysconfdir}/freeDiameter/freeDiameter.conf <<EOF
## OE specific ##
#Identity="${FD_HOSTNAME}";
Identity = "${FD_HOSTNAME}.${FD_REALM}";
Realm = "${FD_REALM}";
Port = 30868;
SecPort = 30869;
TLS_Cred = "/etc/freeDiameter/${FD_PEM}" , "/etc/freeDiameter/${FD_KEY}";
TLS_CA = "/etc/freeDiameter/${FD_CA}";
TLS_DH_File = "/etc/freeDiameter/${FD_DH_PEM}";
EOF
# create self cert
openssl req -x509 -config ${STAGING_DIR_NATIVE}/etc/ssl/openssl.cnf -newkey rsa:4096 -sha256 -nodes -out ${D}${sysconfdir}/freeDiameter/${FD_PEM} -keyout ${D}${sysconfdir}/freeDiameter/${FD_KEY} -days 3650 -subj '/CN=${FD_HOSTNAME}.${FD_REALM}'
openssl dhparam -out ${D}${sysconfdir}/freeDiameter/${FD_DH_PEM} 1024
}
do_install_ptest() {
sed -i "s#\(EXTENSIONS_DIR=\).*\$#\1${libdir}/${fd_pkgname}/#" ${D}${PTEST_PATH}/run-ptest
mv ${D}${PTEST_PATH}-tests/* ${D}${PTEST_PATH}/
rmdir ${D}${PTEST_PATH}-tests
install -m 0644 ${B}/tests/CTestTestfile.cmake ${D}${PTEST_PATH}/
}
FILES_${PN}-dbg += "${libdir}/${fd_pkgname}/.debug/*"
# include the extensions in main package
FILES_${PN} += "${libdir}/${fd_pkgname}/*"
RDEPENDS_${PN} = "glib-2.0 gnutls libidn"
RDEPENDS_${PN} += "openssl openssl-conf openssl-engines"
RRECOMMENDS_${PN} += "kernel-module-tipc kernel-module-sctp"
RRECOMMENDS_${PN} += "kernel-module-udp-tunnel kernel-module-ipip"
RDEPENDS_${PN}-ptest = "cmake"
INITSCRIPT_PACKAGES = "${PN}"
INITSCRIPT_NAME_${PN} = "${BPN}"
INITSCRIPT_PARAMS$_${PN} = "start 30 . stop 70 0 1 2 3 4 5 6 ."
SYSTEMD_SERVICE_${PN} = "freediameter.service"
SYSTEMD_AUTO_ENABLE = "disable"
CONFFILES_${PN} = "${sysconfdir}/freediameter.conf"