diff options
Diffstat (limited to 'meta-edison-distro')
186 files changed, 29846 insertions, 0 deletions
diff --git a/meta-edison-distro/COPYING.MIT b/meta-edison-distro/COPYING.MIT new file mode 100644 index 0000000..89de354 --- /dev/null +++ b/meta-edison-distro/COPYING.MIT @@ -0,0 +1,17 @@ +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +THE SOFTWARE. diff --git a/meta-edison-distro/README b/meta-edison-distro/README new file mode 100644 index 0000000..3237326 --- /dev/null +++ b/meta-edison-distro/README @@ -0,0 +1,118 @@ +This README file contains information on building the meta-edison +BSP layer, and booting the images contained in the /binary directory. +Please see the corresponding sections below for details. + + +Dependencies +============ + +This layer depends on: + + URI: git://git.openembedded.org/bitbake + branch: master + + URI: git://git.openembedded.org/openembedded-core + layers: meta + branch: master + + URI: git://git.yoctoproject.org/xxxx + layers: xxxx + branch: master + + +Patches +======= + +Please submit any patches against this BSP to the Yocto mailing list +(yocto@yoctoproject.org) and cc: the maintainer: + +Maintainer: XXX YYYYYY <xxx.yyyyyy@zzzzz.com> + +Please see the meta-xxxx/MAINTAINERS file for more details. + + +Table of Contents +================= + + I. Building the meta-edison BSP layer + II. Booting the images in /binary + + +I. Building the meta-edison BSP layer +======================================== + +--- replace with specific instructions for your layer --- + +In order to build an image with BSP support for a given release, you +need to download the corresponding BSP tarball from the 'Board Support +Package (BSP) Downloads' page of the Yocto Project website. + +Having done that, and assuming you extracted the BSP tarball contents +at the top-level of your yocto build tree, you can build a +edison image by adding the location of the meta-edison +layer to bblayers.conf, along with any other layers needed (to access +common metadata shared between BSPs) e.g.: + + yocto/meta-xxxx \ + yocto/meta-xxxx/meta-edison \ + +To enable the edison layer, add the edison MACHINE to local.conf: + + MACHINE ?= "edison" + +You should then be able to build a edison image as such: + + $ source oe-init-build-env + $ bitbake core-image-sato + +At the end of a successful build, you should have a live image that +you can boot from a USB flash drive (see instructions on how to do +that below, in the section 'Booting the images from /binary'). + +As an alternative to downloading the BSP tarball, you can also work +directly from the meta-xxxx git repository. For each BSP in the +'meta-xxxx' repository, there are multiple branches, one corresponding +to each major release starting with 'laverne' (0.90), in addition to +the latest code which tracks the current master (note that not all +BSPs are present in every release). Instead of extracting a BSP +tarball at the top level of your yocto build tree, you can +equivalently check out the appropriate branch from the meta-xxxx +repository at the same location. + + +II. Booting the images in /binary +================================= + +--- replace with specific instructions for your platform --- + +This BSP contains bootable live images, which can be used to directly +boot Yocto off of a USB flash drive. + +Under Linux, insert a USB flash drive. Assuming the USB flash drive +takes device /dev/sdf, use dd to copy the live image to it. For +example: + +# dd if=core-image-sato-edison-20101207053738.hddimg of=/dev/sdf +# sync +# eject /dev/sdf + +This should give you a bootable USB flash device. Insert the device +into a bootable USB socket on the target, and power on. This should +result in a system booted to the Sato graphical desktop. + +If you want a terminal, use the arrows at the top of the UI to move to +different pages of available applications, one of which is named +'Terminal'. Clicking that should give you a root terminal. + +If you want to ssh into the system, you can use the root terminal to +ifconfig the IP address and use that to ssh in. The root password is +empty, so to log in type 'root' for the user name and hit 'Enter' at +the Password prompt: and you should be in. + +---- + +If you find you're getting corrupt images on the USB (it doesn't show +the syslinux boot: prompt, or the boot: prompt contains strange +characters), try doing this first: + +# dd if=/dev/zero of=/dev/sdf bs=1M count=512 diff --git a/meta-edison-distro/README.sources b/meta-edison-distro/README.sources new file mode 100644 index 0000000..3c4cb7b --- /dev/null +++ b/meta-edison-distro/README.sources @@ -0,0 +1,17 @@ +The sources for the packages comprising the images shipped with this +BSP can be found at the following location: + +http://downloads.yoctoproject.org/mirror/sources/ + +The metadata used to generate the images shipped with this BSP, in +addition to the code contained in this BSP, can be found at the +following location: + +http://www.yoctoproject.org/downloads/yocto-1.1/poky-edison-6.0.tar.bz2 + +The metadata used to generate the images shipped with this BSP, in +addition to the code contained in this BSP, can also be found at the +following locations: + +git://git.yoctoproject.org/poky.git +git://git.yoctoproject.org/meta-xxxx diff --git a/meta-edison-distro/conf/distro/poky-edison.conf b/meta-edison-distro/conf/distro/poky-edison.conf new file mode 100644 index 0000000..a0e7466 --- /dev/null +++ b/meta-edison-distro/conf/distro/poky-edison.conf @@ -0,0 +1,20 @@ +require conf/distro/poky.conf +DISTRO = "poky-edison" + +PREFERRED_PROVIDER_virtual/kernel ?= "linux-yocto" +PREFERRED_VERSION_linux-yocto = "3.10%" +PREFERRED_PROVIDER_virtual/bootloader ?= "u-boot" +PREFERRED_VERSION_u-boot ?= "2014.04-1" +PREFERRED_VERSION_u-boot-fw-utils ?= "2014.04-1" +PREFERRED_VERSION_connman ?= "1.27" +PREFERRED_VERSION_openssl ?= "1.0.1j" +PREFERRED_VERSION_systemd ?= "213+gitAUTOINC+c9679c652b" + +DISTRO_FEATURES = "systemd alsa argp bluetooth ext2 largefile usbgadget usbhost wifi xattr nfs zeroconf pci ${DISTRO_FEATURES_LIBC}" + +# Disable sysvinit for recipes with systemd support +DISTRO_FEATURES_BACKFILL_CONSIDERED += "sysvinit" +VIRTUAL-RUNTIME_initscripts = "" +VIRTUAL-RUNTIME_init_manager = "systemd" +# Uncomment to completely disable support for sysv scripts: +PACKAGECONFIG_pn-systemd = "xz" diff --git a/meta-edison-distro/conf/layer.conf b/meta-edison-distro/conf/layer.conf new file mode 100644 index 0000000..3b58c57 --- /dev/null +++ b/meta-edison-distro/conf/layer.conf @@ -0,0 +1,10 @@ +# We have a conf and classes directory, add to BBPATH +BBPATH := "${BBPATH}:${LAYERDIR}" + +# We have a recipes-* directories, add to BBFILES +BBFILES := "${BBFILES} ${LAYERDIR}/recipes-*/*/*.bb \ + ${LAYERDIR}/recipes-*/*/*.bbappend" + +BBFILE_COLLECTIONS += "edison-distro" +BBFILE_PATTERN_edison-distro = "^${LAYERDIR}/" +BBFILE_PRIORITY_edison-distro = "6" diff --git a/meta-edison-distro/files/fs-perms.txt b/meta-edison-distro/files/fs-perms.txt new file mode 100644 index 0000000..a497017 --- /dev/null +++ b/meta-edison-distro/files/fs-perms.txt @@ -0,0 +1,69 @@ +# This file contains a list of files and directories with known permissions. +# It is used by the packaging class to ensure that the permissions, owners and +# group of listed files and directories are in sync across the system. +# +# The format of this file +# +#<path> <mode> <uid> <gid> <walk> <fmode> <fuid> <fgid> +# +# or +# +#<path> link <target> +# +# <path>: directory path +# <mode>: mode for directory +# <uid>: uid for directory +# <gid>: gid for directory +# <walk>: recursively walk the directory? true or false +# <fmode>: if walking, new mode for files +# <fuid>: if walking, new uid for files +# <fgid>: if walking, new gid for files +# <target>: turn the directory into a symlink point to target +# +# in mode, uid or gid, a "-" means don't change any existing values +# +# /usr/src 0755 root root false - - - +# /usr/share/man 0755 root root true 0644 root root + +# Note: all standard config directories are automatically assigned "0755 root root false - - -" + +# Documentation should always be corrected +${mandir} 0755 root root true 0644 root root +${infodir} 0755 root root true 0644 root root +${docdir} 0755 root root true 0644 root root +${datadir}/gtk-doc 0755 root root true 0644 root root + +# Fixup locales +${datadir}/locale 0755 root root true 0644 root root + +# Cleanup headers +${includedir} 0755 root root true 0644 root root +${oldincludedir} 0755 root root true 0644 root root + +# Cleanup debug src +/usr/src/debug 0755 root root true - root root + +# Log directory +${localstatedir}/log 0777 root root false - - - + +# Items from base-files +# Links +${localstatedir}/run link /run +${localstatedir}/lock link /run/lock +${localstatedir}/tmp link volatile/tmp + +# Special permissions from base-files +# Set 1777 +/tmp 01777 root root false - - - +${localstatedir}/volatile/tmp 01777 root root false - - - + +# Set 2775 +/home 02755 root root false - - - +${prefix}/src 02755 root root false - - - +${localstatedir}/local 02755 root root false - - - + +# Set 3755 +/srv 0755 root root false - - - + +# Set 4775 +/var/mail 02755 root root false - - - diff --git a/meta-edison-distro/recipes-benchmark/iperf/iperf-2.0.4/000-Iperf_Fix-CPU-Usage.diff b/meta-edison-distro/recipes-benchmark/iperf/iperf-2.0.4/000-Iperf_Fix-CPU-Usage.diff new file mode 100644 index 0000000..7e89953 --- /dev/null +++ b/meta-edison-distro/recipes-benchmark/iperf/iperf-2.0.4/000-Iperf_Fix-CPU-Usage.diff @@ -0,0 +1,164 @@ +[Thread]: Replace thread_rest() with condition variables + +This applies the patch by Ingo Molnar from + + http://marc.info/?l=linux-kernel&m=119088670113210&w=2 + +by reverting previous changes that coincided with changes made by this +patch. Other than that, the patch is the original from the above URL. + +Gerrit +--- + compat/Thread.c | 6 ------ + src/Reporter.c | 37 +++++++++---------------------------- + src/main.cpp | 2 ++ + 3 files changed, 11 insertions(+), 34 deletions(-) + +rover: changed two remaining thread_rest. + +--- a/compat/Thread.c ++++ b/compat/Thread.c +@@ -405,12 +405,6 @@ int thread_numuserthreads( void ) { + void thread_rest ( void ) { + #if defined( HAVE_THREAD ) + #if defined( HAVE_POSIX_THREAD ) +-#if defined( _POSIX_PRIORITY_SCHEDULING ) +- sched_yield(); +-#else +- usleep( 0 ); +-#endif +- + #else // Win32 + SwitchToThread( ); + #endif +--- a/src/Reporter.c ++++ b/src/Reporter.c +@@ -110,9 +110,8 @@ + + char buffer[64]; // Buffer for printing + ReportHeader *ReportRoot = NULL; +-int threadWait = 0; +-int threadSleeping = 0; + extern Condition ReportCond; ++extern Condition ReportDoneCond; + int reporter_process_report ( ReportHeader *report ); + void process_report ( ReportHeader *report ); + int reporter_handle_packet( ReportHeader *report ); +@@ -340,7 +339,7 @@ + // item + while ( index == 0 ) { + Condition_Signal( &ReportCond ); +- thread_rest(); ++ Condition_Wait( &ReportDoneCond ); + index = agent->reporterindex; + } + agent->agentindex = 0; +@@ -348,11 +347,9 @@ + // Need to make sure that reporter is not about to be "lapped" + while ( index - 1 == agent->agentindex ) { + Condition_Signal( &ReportCond ); +- thread_rest(); ++ Condition_Wait( &ReportDoneCond ); + index = agent->reporterindex; + } +- if (threadSleeping) +- Condition_Signal( &ReportCond ); + + // Put the information there + memcpy( agent->data + agent->agentindex, packet, sizeof(ReportStruct) ); +@@ -382,9 +379,6 @@ + packet->packetLen = 0; + ReportPacket( agent, packet ); + packet->packetID = agent->report.cntDatagrams; +- if (threadSleeping) +- Condition_Signal( &ReportCond ); +- + } + } + +@@ -396,11 +390,8 @@ + void EndReport( ReportHeader *agent ) { + if ( agent != NULL ) { + int index = agent->reporterindex; +- if (threadSleeping) +- Condition_Signal( &ReportCond ); +- + while ( index != -1 ) { +- thread_rest(); ++ Condition_Wait( &ReportDoneCond ); + index = agent->reporterindex; + } + agent->agentindex = -1; +@@ -421,7 +412,7 @@ + Transfer_Info *GetReport( ReportHeader *agent ) { + int index = agent->reporterindex; + while ( index != -1 ) { +- thread_rest(); ++ Condition_Wait( &ReportDoneCond ); + index = agent->reporterindex; + } + return &agent->report.info; +@@ -467,10 +458,6 @@ + * Update the ReportRoot to include this report. + */ + Condition_Lock( ReportCond ); +- if ( isUDP(agent) ) +- threadWait = 0; +- else +- threadWait = 1; + reporthdr->next = ReportRoot; + ReportRoot = reporthdr; + Condition_Signal( &ReportCond ); +@@ -567,6 +554,7 @@ + } + Condition_Unlock ( ReportCond ); + ++again: + if ( ReportRoot != NULL ) { + ReportHeader *temp = ReportRoot; + //Condition_Unlock ( ReportCond ); +@@ -589,19 +577,12 @@ + // finished with report so free it + free( temp ); + Condition_Unlock ( ReportCond ); ++ Condition_Signal( &ReportDoneCond ); ++ if (ReportRoot) ++ goto again; + } +- // yield control of CPU is another thread is waiting +- // sleep on a condition variable, as it is much cheaper +- // on most platforms than issuing schedyield or usleep +- // syscalls +- Condition_Lock ( ReportCond ); +- if ( threadWait && ReportRoot != NULL) { +- threadSleeping = 1; +- Condition_TimedWait (& ReportCond, 1 ); +- threadSleeping = 0; +- } +- Condition_Unlock ( ReportCond ); +- ++ Condition_Signal( &ReportDoneCond ); ++ usleep(10000); + } else { + //Condition_Unlock ( ReportCond ); + } +--- a/src/main.cpp ++++ b/src/main.cpp +@@ -96,6 +96,7 @@ extern "C" { + // records being accessed in a report and also to + // serialize modification of the report list + Condition ReportCond; ++ Condition ReportDoneCond; + } + + // global variables only accessed within this file +@@ -142,6 +143,7 @@ int main( int argc, char **argv ) { + + // Initialize global mutexes and conditions + Condition_Initialize ( &ReportCond ); ++ Condition_Initialize ( &ReportDoneCond ); + Mutex_Initialize( &groupCond ); + Mutex_Initialize( &clients_mutex ); + + + diff --git a/meta-edison-distro/recipes-benchmark/iperf/iperf-2.0.4/001-cast-to-max_size_t-instead-of-int.patch b/meta-edison-distro/recipes-benchmark/iperf/iperf-2.0.4/001-cast-to-max_size_t-instead-of-int.patch new file mode 100644 index 0000000..b6728d4 --- /dev/null +++ b/meta-edison-distro/recipes-benchmark/iperf/iperf-2.0.4/001-cast-to-max_size_t-instead-of-int.patch @@ -0,0 +1,14 @@ +Import Debian patches and fix a lot of real bugs. + +Upstream-Status: Inappropriate [not author. Above message was get from oe.dev c10c33f86903c93611023197a7f812459c2dfe2d] +--- iperf-2.0.4.orig/src/Settings.cpp.orig 2008-04-08 04:37:54.000000000 +0200 ++++ iperf-2.0.4/src/Settings.cpp 2008-05-07 17:41:03.923942801 +0200 +@@ -458,7 +458,7 @@ + case 't': // seconds to write for + // time mode (instead of amount mode) + setModeTime( mExtSettings ); +- mExtSettings->mAmount = (int) (atof( optarg ) * 100.0); ++ mExtSettings->mAmount = (max_size_t) (atof( optarg ) * 100.0); + break; + + case 'u': // UDP instead of TCP diff --git a/meta-edison-distro/recipes-benchmark/iperf/iperf-2.0.4/003-fix-hyphen-used-as-minus-sign.patch b/meta-edison-distro/recipes-benchmark/iperf/iperf-2.0.4/003-fix-hyphen-used-as-minus-sign.patch new file mode 100644 index 0000000..929b5ac --- /dev/null +++ b/meta-edison-distro/recipes-benchmark/iperf/iperf-2.0.4/003-fix-hyphen-used-as-minus-sign.patch @@ -0,0 +1,178 @@ +Import Debian patches and fix a lot of real bugs. + +Upstream-Status: Inappropriate [not author. Above message was get from oe.dev c10c33f86903c93611023197a7f812459c2dfe2d] + +--- iperf-2.0.4.orig/man/iperf.1 2008-08-21 00:21:49.290527643 +0200 ++++ iperf-2.0.4/man/iperf.1 2008-08-21 00:35:17.850640445 +0200 +@@ -2,21 +2,21 @@ + .SH NAME + iperf \- perform network throughput tests + .SH SYNOPSIS +-.B iperf -s [ ++.B iperf \-s [ + .I options + .B ] + +-.B iperf -c ++.B iperf \-c + .I server + .B [ + .I options + .B ] + +-.B iperf -u -s [ ++.B iperf \-u \-s [ + .I options + .B ] + +-.B iperf -u -c ++.B iperf \-u \-c + .I server + .B [ + .I options +@@ -28,103 +28,103 @@ + traffic). + .SH "GENERAL OPTIONS" + .TP +-.BR -f ", " --format " " ++.BR \-f ", " \-\-format " " + [kmKM] format to report: Kbits, Mbits, KBytes, MBytes + .TP +-.BR -h ", " --help " " ++.BR \-h ", " \-\-help " " + print a help synopsis + .TP +-.BR -i ", " --interval " \fIn\fR" ++.BR \-i ", " \-\-interval " \fIn\fR" + pause \fIn\fR seconds between periodic bandwidth reports + .TP +-.BR -l ", " --len " \fIn\fR[KM]" ++.BR \-l ", " \-\-len " \fIn\fR[KM]" + set length read/write buffer to \fIn\fR (default 8 KB) + .TP +-.BR -m ", " --print_mss " " ++.BR \-m ", " \-\-print_mss " " + print TCP maximum segment size (MTU - TCP/IP header) + .TP +-.BR -o ", " --output " <filename>" ++.BR \-o ", " \-\-output " <filename>" + output the report or error message to this specified file + .TP +-.BR -p ", " --port " \fIn\fR" ++.BR \-p ", " \-\-port " \fIn\fR" + set server port to listen on/connect to to \fIn\fR (default 5001) + .TP +-.BR -u ", " --udp " " ++.BR \-u ", " \-\-udp " " + use UDP rather than TCP + .TP +-.BR -w ", " --window " \fIn\fR[KM]" ++.BR \-w ", " \-\-window " \fIn\fR[KM]" + TCP window size (socket buffer size) + .TP +-.BR -B ", " --bind " <host>" ++.BR \-B ", " \-\-bind " <host>" + bind to <host>, an interface or multicast address + .TP +-.BR -C ", " --compatibility " " ++.BR \-C ", " \-\-compatibility " " + for use with older versions does not sent extra msgs + .TP +-.BR -M ", " --mss " \fIn\fR" ++.BR \-M ", " \-\-mss " \fIn\fR" + set TCP maximum segment size (MTU - 40 bytes) + .TP +-.BR -N ", " --nodelay " " ++.BR \-N ", " \-\-nodelay " " + set TCP no delay, disabling Nagle's Algorithm + .TP +-.BR -v ", " --version " " ++.BR \-v ", " \-\-version " " + print version information and quit + .TP +-.BR -V ", " --IPv6Version " " ++.BR \-V ", " \-\-IPv6Version " " + Set the domain to IPv6 + .TP +-.BR -x ", " --reportexclude " " ++.BR \-x ", " \-\-reportexclude " " + [CDMSV] exclude C(connection) D(data) M(multicast) S(settings) V(server) reports + .TP +-.BR -y ", " --reportstyle " C|c" ++.BR \-y ", " \-\-reportstyle " C|c" + if set to C or c report results as CSV (comma separated values) + .SH "SERVER SPECIFIC OPTIONS" + .TP +-.BR -s ", " --server " " ++.BR \-s ", " \-\-server " " + run in server mode + .TP +-.BR -U ", " --single_udp " " ++.BR \-U ", " \-\-single_udp " " + run in single threaded UDP mode + .TP +-.BR -D ", " --daemon " " ++.BR \-D ", " \-\-daemon " " + run the server as a daemon + .SH "CLIENT SPECIFIC OPTIONS" + .TP +-.BR -b ", " --bandwidth " \fIn\fR[KM]" ++.BR \-b ", " \-\-bandwidth " \fIn\fR[KM]" + set target bandwidth to \fIn\fR bits/sec (default 1 Mbit/sec). +-This setting requires UDP (-u). ++This setting requires UDP (\-u). + .TP +-.BR -c ", " --client " <host>" ++.BR \-c ", " \-\-client " <host>" + run in client mode, connecting to <host> + .TP +-.BR -d ", " --dualtest " " ++.BR \-d ", " \-\-dualtest " " + Do a bidirectional test simultaneously + .TP +-.BR -n ", " --num " \fIn\fR[KM]" +-number of bytes to transmit (instead of -t) ++.BR \-n ", " \-\-num " \fIn\fR[KM]" ++number of bytes to transmit (instead of \-t) + .TP +-.BR -r ", " --tradeoff " " ++.BR \-r ", " \-\-tradeoff " " + Do a bidirectional test individually + .TP +-.BR -t ", " --time " \fIn\fR" ++.BR \-t ", " \-\-time " \fIn\fR" + time in seconds to transmit for (default 10 secs) + .TP +-.BR -F ", " --fileinput " <name>" ++.BR \-F ", " \-\-fileinput " <name>" + input the data to be transmitted from a file + .TP +-.BR -I ", " --stdin " " ++.BR \-I ", " \-\-stdin " " + input the data to be transmitted from stdin + .TP +-.BR -L ", " --listenport " \fIn\fR" ++.BR \-L ", " \-\-listenport " \fIn\fR" + port to recieve bidirectional tests back on + .TP +-.BR -P ", " --parallel " \fIn\fR" ++.BR \-P ", " \-\-parallel " \fIn\fR" + number of parallel client threads to run + .TP +-.BR -T ", " --ttl " \fIn\fR" ++.BR \-T ", " \-\-ttl " \fIn\fR" + time-to-live, for multicast (default 1) + .TP +-.BR -Z ", " --linux-congestion " <algo>" ++.BR \-Z ", " \-\-linux\-congestion " <algo>" + set TCP congestion control algorithm (Linux only) + .SH ENVIRONMENT + .TP +@@ -143,6 +143,6 @@ + Kevin Gibbs, + John Estabrook <jestabro at ncsa.uiuc.edu>, + Andrew Gallatin <gallatin at gmail.com>, +-Stephen Hemminger <shemminger at linux-foundation.org> ++Stephen Hemminger <shemminger at linux\-foundation.org> + .SH "SEE ALSO" + http://iperf.sourceforge.net/ diff --git a/meta-edison-distro/recipes-benchmark/iperf/iperf-2.0.4/004-svn-r43-ro.patch b/meta-edison-distro/recipes-benchmark/iperf/iperf-2.0.4/004-svn-r43-ro.patch new file mode 100644 index 0000000..8340148 --- /dev/null +++ b/meta-edison-distro/recipes-benchmark/iperf/iperf-2.0.4/004-svn-r43-ro.patch @@ -0,0 +1,117 @@ +Import Debian patches and fix a lot of real bugs. + +Upstream-Status: Inappropriate [not author. Above message was get from oe.dev c10c33f86903c93611023197a7f812459c2dfe2d] + +--- iperf-2.0.4-4/AUTHORS 2009-07-06 12:02:24.159696747 +0200 ++++ iperf-2.0.4/AUTHORS 2009-07-06 12:14:32.236079541 +0200 +@@ -28,3 +28,7 @@ + + Stephen Hemminger <shemminger@linux-foundation.org> + * Linux congestion control selection and theading improvements ++ ++Nathan Jones <nmjones@users.sourceforge.net> ++ * patch for underflow when value specified in -n is not a multiple of -l ++ +--- iperf-2.0.4-4/ChangeLog 2009-07-06 12:02:24.166276642 +0200 ++++ iperf-2.0.4/ChangeLog 2009-07-06 12:15:28.883699655 +0200 +@@ -1,3 +1,18 @@ ++2008-05-09 Jon Dugan <jdugan@x1024.net> ++ ++* change currLen to unsigned to squelch warning generated by Nathan's patch ++ ++2008-05-09 Nathan Jones <nmjones@users.sourceforge.net> ++ ++* prevent underflow when the amount of data to be transmitted (-n) is not a ++multiple of the buffer size (-l) Patch: ++https://sourceforge.net/tracker/index.php?func=detail&aid=1943432&group_id=128336&atid=711373 ++ ++2008-04-08 Jon Dugan <jdugan@x1024.net> ++ ++* print report headers only once ++* use appropriate report header for UDP tests ++ + 2008-04-07 Jon Dugan <jdugan@x1024.net> + + * Add man page to autoconf goo +diff -urN 204orig/src/Client.cpp trunk/src/Client.cpp +--- 204orig/src/Client.cpp 2008-04-08 04:37:54.000000000 +0200 ++++ trunk/src/Client.cpp 2008-05-10 05:18:35.000000000 +0200 +@@ -116,7 +116,7 @@ + const int kBytes_to_Bits = 8; + + void Client::RunTCP( void ) { +- long currLen = 0; ++ unsigned long currLen = 0; + struct itimerval it; + max_size_t totLen = 0; + +@@ -170,7 +170,12 @@ + } + + if ( !mMode_Time ) { +- mSettings->mAmount -= currLen; ++ /* mAmount may be unsigned, so don't let it underflow! */ ++ if( mSettings->mAmount >= currLen ) { ++ mSettings->mAmount -= currLen; ++ } else { ++ mSettings->mAmount = 0; ++ } + } + + } while ( ! (sInterupted || +@@ -198,7 +203,7 @@ + + void Client::Run( void ) { + struct UDP_datagram* mBuf_UDP = (struct UDP_datagram*) mBuf; +- long currLen = 0; ++ unsigned long currLen = 0; + + int delay_target = 0; + int delay = 0; +@@ -310,7 +315,12 @@ + delay_loop( delay ); + } + if ( !mMode_Time ) { +- mSettings->mAmount -= currLen; ++ /* mAmount may be unsigned, so don't let it underflow! */ ++ if( mSettings->mAmount >= currLen ) { ++ mSettings->mAmount -= currLen; ++ } else { ++ mSettings->mAmount = 0; ++ } + } + + } while ( ! (sInterupted || +diff -urN 204orig/src/ReportDefault.c trunk/src/ReportDefault.c +--- 204orig/src/ReportDefault.c 2008-04-08 04:37:54.000000000 +0200 ++++ trunk/src/ReportDefault.c 2008-04-09 02:08:11.000000000 +0200 +@@ -67,6 +67,7 @@ + * Prints transfer reports in default style + */ + void reporter_printstats( Transfer_Info *stats ) { ++ static char header_printed = 0; + + byte_snprintf( buffer, sizeof(buffer)/2, (double) stats->TotalLen, + toupper( stats->mFormat)); +@@ -76,13 +77,19 @@ + + if ( stats->mUDP != (char)kMode_Server ) { + // TCP Reporting +- printf( report_bw_header); ++ if( !header_printed ) { ++ printf( report_bw_header); ++ header_printed = 1; ++ } + printf( report_bw_format, stats->transferID, + stats->startTime, stats->endTime, + buffer, &buffer[sizeof(buffer)/2] ); + } else { + // UDP Reporting +- printf( report_bw_jitter_loss_header); ++ if( !header_printed ) { ++ printf( report_bw_jitter_loss_header); ++ header_printed = 1; ++ } + printf( report_bw_jitter_loss_format, stats->transferID, + stats->startTime, stats->endTime, + buffer, &buffer[sizeof(buffer)/2], diff --git a/meta-edison-distro/recipes-benchmark/iperf/iperf-2.0.4/005-iperf-die-on-bind-fail.patch b/meta-edison-distro/recipes-benchmark/iperf/iperf-2.0.4/005-iperf-die-on-bind-fail.patch new file mode 100644 index 0000000..ec13d6b --- /dev/null +++ b/meta-edison-distro/recipes-benchmark/iperf/iperf-2.0.4/005-iperf-die-on-bind-fail.patch @@ -0,0 +1,15 @@ +Import Debian patches and fix a lot of real bugs. + +Upstream-Status: Inappropriate [not author. Above message was get from oe.dev c10c33f86903c93611023197a7f812459c2dfe2d] + +--- iperf-2.0.4/src/Listener.cpp 2009-02-23 16:20:31.000000000 -0500 ++++ iperf-2.0.4-fixed/src/Listener.cpp 2009-02-23 16:20:40.000000000 -0500 +@@ -333,7 +333,7 @@ + #endif + { + rc = bind( mSettings->mSock, (sockaddr*) &mSettings->local, mSettings->size_local ); +- WARN_errno( rc == SOCKET_ERROR, "bind" ); ++ FAIL_errno( rc == SOCKET_ERROR, "bind", mSettings ); + } + // listen for connections (TCP only). + // default backlog traditionally 5 diff --git a/meta-edison-distro/recipes-benchmark/iperf/iperf-2.0.4/006-iperf-die-on-connect-fail.patch b/meta-edison-distro/recipes-benchmark/iperf/iperf-2.0.4/006-iperf-die-on-connect-fail.patch new file mode 100644 index 0000000..9e17e6d --- /dev/null +++ b/meta-edison-distro/recipes-benchmark/iperf/iperf-2.0.4/006-iperf-die-on-connect-fail.patch @@ -0,0 +1,15 @@ +Import Debian patches and fix a lot of real bugs. + +Upstream-Status: Inappropriate [not author. Above message was get from oe.dev c10c33f86903c93611023197a7f812459c2dfe2d] + +--- iperf-2.0.4/src/Client.cpp 2008-04-07 22:37:54.000000000 -0400 ++++ iperf-2.0.4-fixed/src/Client.cpp 2009-03-03 12:30:02.000000000 -0500 +@@ -403,7 +403,7 @@ + // connect socket + rc = connect( mSettings->mSock, (sockaddr*) &mSettings->peer, + SockAddr_get_sizeof_sockaddr( &mSettings->peer )); +- WARN_errno( rc == SOCKET_ERROR, "connect" ); ++ FAIL_errno( rc == SOCKET_ERROR, "connect", mSettings ); + + getsockname( mSettings->mSock, (sockaddr*) &mSettings->local, + &mSettings->size_local ); diff --git a/meta-edison-distro/recipes-benchmark/iperf/iperf-2.0.4/007-iperf-reporter-deadlock.patch b/meta-edison-distro/recipes-benchmark/iperf/iperf-2.0.4/007-iperf-reporter-deadlock.patch new file mode 100644 index 0000000..4b5f914 --- /dev/null +++ b/meta-edison-distro/recipes-benchmark/iperf/iperf-2.0.4/007-iperf-reporter-deadlock.patch @@ -0,0 +1,68 @@ +by Kirby Zhou < kirbyzhou \x40 sohu-rd.com > +add a Condition_Wait_Event for ReporterDoneCond + +Upstream-Status: Inappropriate [not author] + +--- iperf-2.0.4.orig/include/Condition.h 2007-08-30 00:06:19.000000000 +0200 ++++ iperf-2.0.4/include/Condition.h 2009-07-06 11:45:02.407700310 +0200 +@@ -115,6 +115,11 @@ typedef struct Condition { + // sleep this thread, waiting for condition signal + #if defined( HAVE_POSIX_THREAD ) + #define Condition_Wait( Cond ) pthread_cond_wait( &(Cond)->mCondition, &(Cond)->mMutex ) ++ #define Condition_Wait_Event( Cond ) do { \ ++ Mutex_Lock( &(Cond)->mMutex ); \ ++ pthread_cond_wait( &(Cond)->mCondition, &(Cond)->mMutex ); \ ++ Mutex_Unlock( &(Cond)->mMutex ); \ ++ } while ( 0 ) + #elif defined( HAVE_WIN32_THREAD ) + // atomically release mutex and wait on condition, + // then re-acquire the mutex +@@ -122,6 +127,10 @@ typedef struct Condition { + SignalObjectAndWait( (Cond)->mMutex, (Cond)->mCondition, INFINITE, false ); \ + Mutex_Lock( &(Cond)->mMutex ); \ + } while ( 0 ) ++ #define Condition_Wait_Event( Cond ) do { \ ++ Mutex_Lock( &(Cond)->mMutex ); \ ++ SignalObjectAndWait( (Cond)->mMutex, (Cond)->mCondition, INFINITE, false ); \ ++ } while ( 0 ) + #else + #define Condition_Wait( Cond ) + #endif +--- iperf-2.0.4.orig/src/Reporter.c 2009-07-06 11:49:05.996443011 +0200 ++++ iperf-2.0.4/src/Reporter.c 2009-07-06 11:46:52.919699530 +0200 +@@ -339,7 +339,7 @@ void ReportPacket( ReportHeader* agent, + // item + while ( index == 0 ) { + Condition_Signal( &ReportCond ); +- Condition_Wait( &ReportDoneCond ); ++ Condition_Wait_Event( &ReportDoneCond ); + index = agent->reporterindex; + } + agent->agentindex = 0; +@@ -347,7 +347,7 @@ void ReportPacket( ReportHeader* agent, + // Need to make sure that reporter is not about to be "lapped" + while ( index - 1 == agent->agentindex ) { + Condition_Signal( &ReportCond ); +- Condition_Wait( &ReportDoneCond ); ++ Condition_Wait_Event( &ReportDoneCond ); + index = agent->reporterindex; + } + +@@ -391,7 +391,7 @@ void EndReport( ReportHeader *agent ) { + if ( agent != NULL ) { + int index = agent->reporterindex; + while ( index != -1 ) { +- Condition_Wait( &ReportDoneCond ); ++ Condition_Wait_Event( &ReportDoneCond ); + index = agent->reporterindex; + } + agent->agentindex = -1; +@@ -412,7 +412,7 @@ void EndReport( ReportHeader *agent ) { + Transfer_Info *GetReport( ReportHeader *agent ) { + int index = agent->reporterindex; + while ( index != -1 ) { +- Condition_Wait( &ReportDoneCond ); ++ Condition_Wait_Event( &ReportDoneCond ); + index = agent->reporterindex; + } + return &agent->report.info; diff --git a/meta-edison-distro/recipes-benchmark/iperf/iperf-2.0.4/008-numofreport.patch b/meta-edison-distro/recipes-benchmark/iperf/iperf-2.0.4/008-numofreport.patch new file mode 100644 index 0000000..c5d85b1 --- /dev/null +++ b/meta-edison-distro/recipes-benchmark/iperf/iperf-2.0.4/008-numofreport.patch @@ -0,0 +1,15 @@ +by Kirby Zhou < kirbyzhou \x40 sohu-rd.com > +increase the queue length to avoid thread racing + +Upstream-Status: Inappropriate [not author] +--- iperf-2.0.4.orig/include/Reporter.h 2008-04-08 04:37:54.000000000 +0200 ++++ iperf-2.0.4/include/Reporter.h 2009-07-06 11:53:58.700541554 +0200 +@@ -61,7 +61,7 @@ struct server_hdr; + + #include "Settings.hpp" + +-#define NUM_REPORT_STRUCTS 700 ++#define NUM_REPORT_STRUCTS 5700 + #define NUM_MULTI_SLOTS 5 + + #ifdef __cplusplus diff --git a/meta-edison-distro/recipes-benchmark/iperf/iperf-2.0.4/009-delayloop.patch b/meta-edison-distro/recipes-benchmark/iperf/iperf-2.0.4/009-delayloop.patch new file mode 100644 index 0000000..a2a0797 --- /dev/null +++ b/meta-edison-distro/recipes-benchmark/iperf/iperf-2.0.4/009-delayloop.patch @@ -0,0 +1,22 @@ +by Kirby Zhou < kirbyzhou \x40 sohu-rd.com > +using sched_yield to schedule other threads, so multiple iperf can run simultaneously +using usleep with delay-loop between 2 package is long than 1.25ms. + +Upstream-Status: Inappropriate [not author] + +--- iperf-2.0.4-4/compat/delay.cpp 2009-07-06 12:02:24.166276642 +0200 ++++ iperf-2.0.4/compat/delay.cpp 2009-07-06 12:01:33.858384005 +0200 +@@ -69,6 +69,13 @@ void delay_loop( unsigned long usec ) { + + Timestamp now; + while ( now.before( end ) ) { ++ long diff = end.subUsec(now); ++ if (diff >= 1250) { ++ usleep(0); ++ } ++ if (diff >= 2) { ++ sched_yield(); ++ } + now.setnow(); + } + } diff --git a/meta-edison-distro/recipes-benchmark/iperf/iperf_2.0.4.bb b/meta-edison-distro/recipes-benchmark/iperf/iperf_2.0.4.bb new file mode 100644 index 0000000..bd8bac1 --- /dev/null +++ b/meta-edison-distro/recipes-benchmark/iperf/iperf_2.0.4.bb @@ -0,0 +1,46 @@ +DESCRIPTION = "Iperf is a tool to measure maximum TCP bandwidth, allowing the tuning of various parameters and UDP characteristics" +HOMEPAGE = "http://dast.nlanr.net/Projects/Iperf/" +SECTION = "console/network" +LICENSE = "NewBSD" +LIC_FILES_CHKSUM = "file://COPYING;md5=e8478eae9f479e39bc34975193360298" + +SRC_URI = " \ + ${SOURCEFORGE_MIRROR}/iperf/iperf-${PV}.tar.gz \ + file://000-Iperf_Fix-CPU-Usage.diff \ + file://001-cast-to-max_size_t-instead-of-int.patch \ + file://003-fix-hyphen-used-as-minus-sign.patch \ + file://004-svn-r43-ro.patch \ + file://005-iperf-die-on-bind-fail.patch \ + file://006-iperf-die-on-connect-fail.patch \ + file://007-iperf-reporter-deadlock.patch \ + file://008-numofreport.patch \ + file://009-delayloop.patch \ + " + + +SRC_URI[md5sum] = "8c5bc14cc2ea55f18f22afe3c23e3dcb" +SRC_URI[sha256sum] = "3b52f1c178d6a99c27114929d5469c009197d15379c967b329bafb956f397944" + +inherit autotools + +S="${WORKDIR}/iperf-${PV}" + +EXTRA_OECONF = "--exec-prefix=${STAGING_DIR_HOST}${layout_exec_prefix}" + +do_configure() { + export ac_cv_func_malloc_0_nonnull=yes + gnu-configize + oe_runconf +} + +do_compile() { + cd ${WORKDIR}/iperf-${PV} + oe_runmake +} + +do_install() { + cd ${WORKDIR}/iperf-${PV}/src + oe_runmake DESTDIR=${D} install +} + + diff --git a/meta-edison-distro/recipes-connectivity/bluetooth-rfkill-event/COPYING b/meta-edison-distro/recipes-connectivity/bluetooth-rfkill-event/COPYING new file mode 100644 index 0000000..48172c1 --- /dev/null +++ b/meta-edison-distro/recipes-connectivity/bluetooth-rfkill-event/COPYING @@ -0,0 +1,14 @@ + Copyright (c) 2014, Intel Corporation. + + This program is free software; you can redistribute it and/or modify it + under the terms of version 2 of the GNU General Public License as + published by the Free Software Foundation. + + This program is distributed in the hope that it will be useful, but WITHOUT + ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for + more details. + + You should have received a copy of the GNU General Public License along with + this program; if not, write to the Free Software Foundation, Inc., 59 + Temple Place - Suite 330, Boston, MA 02111-1307, USA. diff --git a/meta-edison-distro/recipes-connectivity/bluetooth-rfkill-event/bluetooth-rfkill-event_1.0.bb b/meta-edison-distro/recipes-connectivity/bluetooth-rfkill-event/bluetooth-rfkill-event_1.0.bb new file mode 100644 index 0000000..72bfc01 --- /dev/null +++ b/meta-edison-distro/recipes-connectivity/bluetooth-rfkill-event/bluetooth-rfkill-event_1.0.bb @@ -0,0 +1,41 @@ +DESCRIPTION = "Bluetooth rfkill event daemon for Bluetooth chips" +SECTION = "connectivity" + +LICENSE = "GPLv2" +LIC_FILES_CHKSUM = "file://${THISDIR}/COPYING;md5=3fa94220fac4e7b1463e6fd8d63140c5" + +DEPENDS = "glib-2.0 bluez5" + +FILESEXTRAPATHS_prepend := "${THISDIR}/files/" + +inherit systemd + +SYSTEMD_SERVICE_${PN} = "bluetooth-rfkill-event.service" + +SRC_URI = "file://bluetooth_rfkill_event.c \ + file://bluetooth-rfkill-event.service \ + file://bcm43341.conf" + +S = "${WORKDIR}" + +INC_DIRS = "-I${STAGING_INCDIR}/glib-2.0 -I${STAGING_LIBDIR}/glib-2.0/include/" + +LIBS = "-lglib-2.0" + +do_compile() { + ${CC} $CFLAGS -o bluetooth_rfkill_event bluetooth_rfkill_event.c ${INC_DIRS} ${LIBS} +} + +do_install() { + install -v -d ${D}${sbindir} + install -m 0755 bluetooth_rfkill_event ${D}${sbindir} + + if ${@base_contains('DISTRO_FEATURES','systemd','true','false',d)}; then + # Copy file service + install -d ${D}/${systemd_unitdir}/system + install -m 644 ${WORKDIR}/bluetooth-rfkill-event.service ${D}/${systemd_unitdir}/system + fi + + install -v -d ${D}/etc/firmware/ + install -m 0755 ${WORKDIR}/bcm43341.conf ${D}/etc/firmware/bcm43341.conf +} diff --git a/meta-edison-distro/recipes-connectivity/bluetooth-rfkill-event/files/bcm43341.conf b/meta-edison-distro/recipes-connectivity/bluetooth-rfkill-event/files/bcm43341.conf new file mode 100644 index 0000000..d43b051 --- /dev/null +++ b/meta-edison-distro/recipes-connectivity/bluetooth-rfkill-event/files/bcm43341.conf @@ -0,0 +1,32 @@ +########################################################################### +# +# Configuration file for Broadcom hciattach utility (brcm_patchram_plus) +# +# option are loaded by rfkill event daemon and passed to brcm_patchram_plus +# +########################################################################### +[General] + +# fork +fork = true + +# Low Power Mode +lpm = true + +# register HCI device +reg_hci = true + +# set baudrate; possible values: +# 115200, 230400, 460800, 500000, 576000, 921600 +# 1000000, 1152000, 1500000, 2000000, 2500000, 3000000, 3500000, 4000000 +baud_rate = 3000000 + +# FW patch file +fw_patch = /etc/firmware/bcm43341.hcd + +# UART device +uart_dev = /dev/ttyMFD0 + +# SCO settings +# configure sco routing to Transport (HCI); +scopcm = 1,0,0,0,0,0,0,0,0,0 diff --git a/meta-edison-distro/recipes-connectivity/bluetooth-rfkill-event/files/bluetooth-rfkill-event.service b/meta-edison-distro/recipes-connectivity/bluetooth-rfkill-event/files/bluetooth-rfkill-event.service new file mode 100644 index 0000000..a0565f5 --- /dev/null +++ b/meta-edison-distro/recipes-connectivity/bluetooth-rfkill-event/files/bluetooth-rfkill-event.service @@ -0,0 +1,10 @@ +[Unit] +Description=Bluetooth rf kill event daemon + +[Service] +Type=simple +ExecStart=/usr/sbin/bluetooth_rfkill_event +Restart=on-failure + +[Install] +WantedBy=multi-user.target diff --git a/meta-edison-distro/recipes-connectivity/bluetooth-rfkill-event/files/bluetooth_rfkill_event.c b/meta-edison-distro/recipes-connectivity/bluetooth-rfkill-event/files/bluetooth_rfkill_event.c new file mode 100644 index 0000000..9d69805 --- /dev/null +++ b/meta-edison-distro/recipes-connectivity/bluetooth-rfkill-event/files/bluetooth_rfkill_event.c @@ -0,0 +1,614 @@ +/****************************************************************************** + * + * Copyright (c) 2014, Intel Corporation. + + * This program is free software; you can redistribute it and/or modify it + * under the terms of version 2 of the GNU General Public License as + * published by the Free Software Foundation. + * + * This program is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for + * more details. + * + * You should have received a copy of the GNU General Public License along with + * this program; if not, write to the Free Software Foundation, Inc., 59 + * Temple Place - Suite 330, Boston, MA 02111-1307, USA. + * + *******************************************************************************/ + +/******************************************************************************* + ** + ** Name: bluetooth_rfkill_event.c + ** + ** Description: This program is listening rfkill event and detect when a + ** 'power' rfkill interface is unblocked and trigger FW patch + ** download for detected chip. + ** + *******************************************************************************/ + +#include <stdio.h> +#include <stdlib.h> +#include <unistd.h> +#include <errno.h> +#include <fcntl.h> +#include <string.h> +#include <sys/poll.h> +#include <sys/time.h> +#include <sys/ioctl.h> +#include <limits.h> +#include <glib.h> +#include <bluetooth/bluetooth.h> +#include <bluetooth/hci.h> +#include <bluetooth/hci_lib.h> + + +enum { + BT_PWR, + BT_HCI, +}; + +/* list of all supported chips: + name is defined in the kernel driver implementing rfkill interface for power */ +#define BCM_RFKILL_NAME "bcm43xx Bluetooth\n" +#define BCM_43341_UART_DEV "/dev/ttyMFD0" +#define BD_ADD_FACTORY_FILE "/factory/bluetooth_address" +char factory_bd_add[18]; +const char default_bd_addr[] = "00:43:34:b1:be:ef"; + +/* attempt to set hci dev UP */ +#define MAX_RETRY 10 + +enum rfkill_operation { + RFKILL_OP_ADD = 0, + RFKILL_OP_DEL, + RFKILL_OP_CHANGE, + RFKILL_OP_CHANGE_ALL, +}; + +enum rfkill_type { + RFKILL_TYPE_ALL = 0, + RFKILL_TYPE_WLAN, + RFKILL_TYPE_BLUETOOTH, + RFKILL_TYPE_UWB, + RFKILL_TYPE_WIMAX, + RFKILL_TYPE_WWAN, + RFKILL_TYPE_GPS, + RFKILL_TYPE_FM, + NUM_RFKILL_TYPES, +}; + +struct rfkill_event { + unsigned int idx; + unsigned char type; + unsigned char op; + unsigned char soft, hard; +} __packed; + +/* HCI UART driver initialization utility; usually it takes care of FW patch download as well */ +char hciattach[PATH_MAX]; +char hciattach_options[PATH_MAX]; +char hci_uart_default_dev[PATH_MAX] = BCM_43341_UART_DEV; + +gboolean hci_dev_registered; +int bt_pwr_rfkill_idx; + +struct main_opts { + /* 'fork' will keep running in background the hciattach utility; N/A if enable_hci is FALSE */ + gboolean enable_fork; + /* send enable Low Power Mode to Broadcom bluetooth controller; needed if power driver implements it */ + gboolean enable_lpm; + /* register the hci device */ + gboolean enable_hci; + /* set UART baud rate */ + gboolean set_baud_rate; + int baud_rate; + /* download FW patch */ + gboolean dl_patch; + char* fw_patch; + /* UART device used for bluetooth; platform dependant */ + char* uart_dev; + /* configure BD address */ + gboolean set_bd; + char* bd_add; + /* set SCO routing for audio interface */ + gboolean set_scopcm; + char* scopcm; +}; + +struct main_opts main_opts; + +static const char * const supported_options[] = { + "fork", + "lpm", + "reg_hci", + "baud_rate", + "fw_patch", + "uart_dev", + "scopcm", +}; + +void init_config() +{ + memset(&main_opts, 0, sizeof(main_opts)); + + main_opts.enable_fork = TRUE; + main_opts.enable_lpm = TRUE; + main_opts.enable_hci = FALSE; + main_opts.set_baud_rate = FALSE; + main_opts.dl_patch = FALSE; + main_opts.set_bd = FALSE; + main_opts.set_scopcm = FALSE; +} + +GKeyFile *load_config(const char *file) +{ + GError *err = NULL; + GKeyFile *keyfile; + + keyfile = g_key_file_new(); + + g_key_file_set_list_separator(keyfile, ','); + + if (!g_key_file_load_from_file(keyfile, file, 0, &err)) { + if (!g_error_matches(err, G_FILE_ERROR, G_FILE_ERROR_NOENT)) + error("Parsing %s failed: %s", file, err->message); + g_error_free(err); + g_key_file_free(keyfile); + return NULL; + } + + return keyfile; +} + +void check_config(GKeyFile *config) +{ + char **keys; + int i; + + if (!config) + return; + + keys = g_key_file_get_groups(config, NULL); + + for (i = 0; keys != NULL && keys[i] != NULL; i++) { + if (!g_str_equal(keys[i], "General")) + warn("Unknown group %s in main.conf", keys[i]); + } + + g_strfreev(keys); + + keys = g_key_file_get_keys(config, "General", NULL, NULL); + + for (i = 0; keys != NULL && keys[i] != NULL; i++) { + gboolean found; + unsigned int j; + + found = FALSE; + for (j = 0; j < G_N_ELEMENTS(supported_options); j++) { + if (g_str_equal(keys[i], supported_options[j])) { + found = TRUE; + break; + } + } + + if (!found) + warn("Unknown key %s in main.conf", keys[i]); + } + + g_strfreev(keys); +} + +void parse_config(GKeyFile *config) +{ + GError *err = NULL; + char *str; + int val; + gboolean boolean; + + if (!config) + return; + + check_config(config); + + boolean = g_key_file_get_boolean(config, "General", "fork", &err); + if (err) { + g_clear_error(&err); + } else + main_opts.enable_fork = boolean; + + boolean = g_key_file_get_boolean(config, "General", "lpm", &err); + if (err) { + g_clear_error(&err); + } else + main_opts.enable_lpm = boolean; + + boolean = g_key_file_get_boolean(config, "General", "reg_hci", &err); + if (err) { + g_clear_error(&err); + } else + main_opts.enable_hci = boolean; + + val = g_key_file_get_integer(config, "General", "baud_rate", &err); + if (err) { + g_clear_error(&err); + } else { + main_opts.baud_rate = val; + main_opts.set_baud_rate = TRUE; + } + + str = g_key_file_get_string(config, "General", "fw_patch", &err); + if (err) { + g_clear_error(&err); + } else { + g_free(main_opts.fw_patch); + main_opts.fw_patch = str; + main_opts.dl_patch = TRUE; + } + + str = g_key_file_get_string(config, "General", "uart_dev", &err); + if (err) { + g_clear_error(&err); + main_opts.uart_dev = hci_uart_default_dev; + } else { + g_free(main_opts.uart_dev); + main_opts.uart_dev = str; + } + + str = g_key_file_get_string(config, "General", "scopcm", &err); + if (err) { + g_clear_error(&err); + } else { + g_free(main_opts.scopcm); + main_opts.scopcm = str; + main_opts.set_scopcm = TRUE; + } +} + +gboolean check_bd_format(const char* bd_add) +{ + int i, len; + + len = strlen(bd_add); + + if (len != 17) + return FALSE; + + for (i = 0 ; i < len; i++) + { + /* check that format is xx:xx: ... etc. */ + if ((isxdigit(bd_add[i]) && i%3 != 2) || + (bd_add[i] == ':' && i%3 == 2)) + { + ; + } + else + { + return FALSE; + } + } + + return TRUE; +} + +void load_bd_add(void) +{ + FILE *fp; + int ret; + + fp = fopen(BD_ADD_FACTORY_FILE, "r"); + + /* if BD add file has not been provisioned do not send VSC to set BD address: the one configured in OTP will be used or default FW one */ + if (fp == NULL) + { + main_opts.set_bd = FALSE; + return; + } + + ret = fscanf(fp, "%17c", factory_bd_add); + + /* if factory BD address is not well formatted or not present do not send VSC to set BD address: the one configured in OTP will be used or default FW one */ + if (!(ret == 1 && check_bd_format(factory_bd_add))) + { + main_opts.set_bd = FALSE; + } + else + { + main_opts.bd_add = factory_bd_add; + main_opts.set_bd = TRUE; + } + + fclose(fp); + +} + +void read_config(char* file) +{ + GKeyFile *config; + char *cur = hciattach_options; + const char *end = hciattach_options + sizeof(hciattach_options); + + /* set first default values and then load configured ones */ + init_config(); + config = load_config(file); + parse_config(config); + load_bd_add(); + + /* set always configured options: use same configured baud-rate also for download, and ignore first 2 bytes (needed by bcm43341 and more recent brcm bt chip) */ + cur += snprintf(cur, end-cur, "%s", "--use_baudrate_for_download --no2bytes"); + + /* concatenate configured options */ + if ((cur < end) && (main_opts.enable_fork)) { + cur += snprintf(cur, end-cur," %s", "--enable_fork"); + } + if ((cur < end) && (main_opts.enable_lpm)) { + cur += snprintf(cur, end-cur," %s", "--enable_lpm"); + } + if ((cur < end) && (main_opts.enable_hci)) { + cur += snprintf(cur, end-cur," %s", "--enable_hci"); + } + if ((cur < end) && (main_opts.set_baud_rate)) { + cur += snprintf(cur, end-cur," --baudrate %d", main_opts.baud_rate); + } + if ((cur < end) && (main_opts.dl_patch)) { + cur += snprintf(cur, end-cur," --patchram %s", main_opts.fw_patch); + } + if ((cur < end) && (main_opts.set_bd)) { + cur += snprintf(cur, end-cur," --bd_addr %s", main_opts.bd_add); + } + if ((cur < end) && (main_opts.set_scopcm)) { + cur += snprintf(cur, end-cur," --scopcm %s", main_opts.scopcm); + } +} + +void free_hci() +{ + char cmd[PATH_MAX]; + + snprintf(cmd, sizeof(cmd), "pidof %s", hciattach); + + if (!system(cmd)) + { + snprintf(cmd, sizeof(cmd), "killall %s", hciattach); + system(cmd); + printf("killing %s\n", hciattach); + fflush(stdout); + } +} + +void attach_hci() +{ + char hci_execute[PATH_MAX]; + + snprintf(hci_execute, sizeof(hci_execute), "%s %s %s", hciattach, hciattach_options, main_opts.uart_dev); + + printf("execute %s\n", hci_execute); + fflush(stdout); + + system(hci_execute); + + /* remember if hci device has been registered (in case conf file is changed) */ + hci_dev_registered = main_opts.enable_hci; +} + +void up_hci(int hci_idx) +{ + int sk, i; + struct hci_dev_info hci_info; + + sk = socket(AF_BLUETOOTH, SOCK_RAW, BTPROTO_HCI); + + if (sk < 0) + { + perror("Fail to create bluetooth hci socket"); + return; + } + + memset(&hci_info, 0, sizeof(hci_info)); + + hci_info.dev_id = hci_idx; + + for (i = 0; i < MAX_RETRY; i++) + { + if (ioctl(sk, HCIGETDEVINFO, (void *) &hci_info) < 0) + { + perror("Failed to get HCI device information"); + /* sleep 100ms */ + usleep(100*1000); + continue; + } + + if (hci_test_bit(HCI_RUNNING, &hci_info.flags) && !hci_test_bit(HCI_INIT, &hci_info.flags)) + { + /* check if kernel has already set device UP... */ + if (!hci_test_bit(HCI_UP, &hci_info.flags)) + { + if (ioctl(sk, HCIDEVUP, hci_idx) < 0) + { + /* ignore if device is already UP and ready */ + if (errno == EALREADY) + break; + + perror("Fail to set hci device UP"); + } + } + break; + } + + /* sleep 100ms */ + usleep(100*1000); + } + + close(sk); +} + +/* calling this routine to be sure to have rfkill hci bluetooth interface unblocked: + if user does: + - 'rfkill block bluetooth' and then + - 'rfkill unblock 2' + once hci bluetooth is registered back it will be blocked */ +void rfkill_bluetooth_unblock() +{ + int fd, sk, times; + int ret = -1; + struct rfkill_event event; + + fd = open("/dev/rfkill", O_RDWR | O_CLOEXEC); + if (fd < 0) + { + perror("fail to open rfkill interface"); + return; + } + memset(&event, 0, sizeof(event)); + event.op = RFKILL_OP_CHANGE_ALL; + event.type = RFKILL_TYPE_BLUETOOTH; + event.soft = 0; + if (write(fd, &event, sizeof(event)) < 0) + { + perror("fail to unblock rfkill bluetooth"); + } + close(fd); + +} + +int main(int argc, char **argv) +{ + struct rfkill_event event; + struct timeval tv; + struct pollfd p; + ssize_t len; + int fd, fd_name, n, type; + int ret, hci_dev_id; + char *script; + char sysname[PATH_MAX]; + + /* this code is ispired by rfkill source code */ + + fd = open("/dev/rfkill", O_RDONLY); + if (fd < 0) { + perror("Can't open RFKILL control device"); + return fd; + } + + memset(&p, 0, sizeof(p)); + p.fd = fd; + p.events = POLLIN | POLLHUP; + + while (1) { + n = poll(&p, 1, -1); + if (n < 0) { + perror("Failed to poll RFKILL control device"); + break; + } + + if (n == 0) + continue; + + len = read(fd, &event, sizeof(event)); + if (len < 0) { + perror("Reading of RFKILL events failed"); + break; + } + + if (len != sizeof(event)) { + perror("Wrong size of RFKILL event"); + break; + } + + /* ignore event for others interfaces (not bluetooth) */ + if (event.type != RFKILL_TYPE_BLUETOOTH) + continue; + + gettimeofday(&tv, NULL); + printf("%ld.%06u: idx %u type %u op %u soft %u hard %u\n", + (long) tv.tv_sec, (unsigned int) tv.tv_usec, + event.idx, event.type, event.op, event.soft, event.hard); + fflush(stdout); + + /* try to read rfkill interface name only if event is not a remove one, in this case call free_hci */ + if (event.op != RFKILL_OP_DEL) + { + /* get the name to check the bt chip */ + snprintf(sysname, sizeof(sysname), "/sys/class/rfkill/rfkill%u/name", event.idx); + + fd_name = open(sysname, O_RDONLY); + if (fd_name < 0) + { + perror("fail to open rfkill name"); + continue; + } + + memset(sysname, 0, sizeof(sysname)); + + /* read name */ + if (read(fd_name, sysname, sizeof(sysname) - 1) < 0) + { + perror("fail to read rfkill name"); + close(fd_name); + continue; + } + + close(fd_name); + + /* based on chip read its config file, if any, and define the hciattach utility used to dowload the patch */ + if (strncmp(BCM_RFKILL_NAME,sysname, sizeof(BCM_RFKILL_NAME)) == 0) + { + read_config("/etc/firmware/bcm43341.conf"); + snprintf(hciattach, sizeof(hciattach), "brcm_patchram_plus"); + type = BT_PWR; + } + else if (g_str_has_prefix(sysname, "hci") ) + { + type = BT_HCI; + hci_dev_id = atoi(sysname + 3); + } + else + continue; + } + + switch (event.op) { + case RFKILL_OP_CHANGE: + case RFKILL_OP_CHANGE_ALL: + case RFKILL_OP_ADD: + if (event.soft == 0 && event.hard == 0) + { + if (type == BT_PWR) + { + /* if unblock is for power interface: download patch and eventually register hci device */ + free_hci(); + attach_hci(); + /* force to unblock also the bluetooth hci rfkill interface if hci device was registered */ + if (hci_dev_registered) + rfkill_bluetooth_unblock(); + } + else if (type == BT_HCI && hci_dev_registered) + { + /* wait unblock on hci bluetooth interface and force device UP */ + up_hci(hci_dev_id); + } + } + else if (type == BT_PWR && hci_dev_registered) + { + /* for a block event on power interface force unblock of hci device interface */ + free_hci(); + } + + /* save index of rfkill interface for bluetooth power */ + if (event.op == RFKILL_OP_ADD && type == BT_PWR) + bt_pwr_rfkill_idx = event.idx; + break; + case RFKILL_OP_DEL: + /* in case pwr rfkill interface is removed, unregister hci dev if it was registered */ + if (bt_pwr_rfkill_idx == event.idx && hci_dev_registered) + free_hci(); + break; + default: + continue; + } + + } + + close(fd); + + return 0; +} diff --git a/meta-edison-distro/recipes-connectivity/bluez5/bluez5_5.15.bbappend b/meta-edison-distro/recipes-connectivity/bluez5/bluez5_5.15.bbappend new file mode 100644 index 0000000..3aad093 --- /dev/null +++ b/meta-edison-distro/recipes-connectivity/bluez5/bluez5_5.15.bbappend @@ -0,0 +1,62 @@ +# overwrite to 5.24 version and its checksum + +PV = "5.24" + +SRC_URI[md5sum] = "37b785185fb98269b45e51b254bd8d3d" +SRC_URI[sha256sum] = "e870c5fba0bf3496856fc720e2d217856fcf40b59829f8cc0c05902ebb9fb837" + +# to get bluetooth.conf +FILESEXTRAPATHS_prepend := "${THISDIR}/files/" + +# few overwrite for 5.24 version +SRC_URI = "\ + ${KERNELORG_MIRROR}/linux/bluetooth/bluez-${PV}.tar.xz \ + file://bluetooth.conf \ + file://obex_set_dbus_session_service.patch \ +" + +RDEPENDS_${PN} += "eglibc-gconv-utf-16" + +PACKAGECONFIG[alsa] = "" + +EXTRA_OECONF = "\ + --enable-sixaxis \ + --enable-tools \ + --disable-cups \ + --enable-test \ + --enable-datafiles \ + ${@base_contains('DISTRO_FEATURES', 'systemd', '--with-systemdsystemunitdir=${systemd_unitdir}/system/', '--disable-systemd', d)} \ + --enable-library \ + --enable-experimental \ +" + +do_install_append() { + install -d ${D}${sysconfdir}/bluetooth/ + if [ -f ${S}/profiles/audio/audio.conf ]; then + install -m 0644 ${S}/profiles/audio/audio.conf ${D}/${sysconfdir}/bluetooth/ + fi + if [ -f ${S}/profiles/proximity/proximity.conf ]; then + install -m 0644 ${S}/profiles/proximity/proximity.conf ${D}/${sysconfdir}/bluetooth/ + fi + if [ -f ${S}/profiles/network/network.conf ]; then + install -m 0644 ${S}/profiles/network/network.conf ${D}/${sysconfdir}/bluetooth/ + fi + if [ -f ${S}/profiles/input/input.conf ]; then + install -m 0644 ${S}/profiles/input/input.conf ${D}/${sysconfdir}/bluetooth/ + fi + if [ -f ${S}/src/main.conf ]; then + install -m 0644 ${S}/src/main.conf ${D}/${sysconfdir}/bluetooth/ + fi + if [ -f ${S}/tools/obexctl ]; then + install -m 0755 ${S}/tools/obexctl ${D}${bindir} + fi + + if ${@base_contains('DISTRO_FEATURES','systemd','true','false',d)}; then + # Copy file service + install -d ${D}/${systemd_unitdir}/system + install -m 644 ${S}/obexd/src/obex.service ${D}/${systemd_unitdir}/system/ + fi + + # at_console doesn't really work with the current state of OE, so punch some more holes so people can actually use BT + install -m 0644 ${WORKDIR}/bluetooth.conf ${D}/${sysconfdir}/dbus-1/system.d/ +} diff --git a/meta-edison-distro/recipes-connectivity/bluez5/files/bluetooth.conf b/meta-edison-distro/recipes-connectivity/bluez5/files/bluetooth.conf new file mode 100644 index 0000000..162c803 --- /dev/null +++ b/meta-edison-distro/recipes-connectivity/bluez5/files/bluetooth.conf @@ -0,0 +1,24 @@ +<!-- This configuration file specifies the required security policies + for Bluetooth core daemon to work. --> + +<!DOCTYPE busconfig PUBLIC "-//freedesktop//DTD D-BUS Bus Configuration 1.0//EN" + "http://www.freedesktop.org/standards/dbus/1.0/busconfig.dtd"> +<busconfig> + + <!-- ../system.conf have denied everything, so we just punch some holes --> + + <policy context="default"> + <allow own="org.bluez"/> + <allow own="org.bluez.obex"/> + <allow send_destination="org.bluez"/> + <allow send_destination="org.bluez.obex"/> + <allow send_interface="org.bluez.Agent1"/> + <allow send_interface="org.bluez.MediaEndpoint1"/> + <allow send_interface="org.bluez.Profile1"/> + <allow send_interface="org.bluez.ThermometerWatcher1"/> + <allow send_interface="org.bluez.AlertAgent1"/> + <allow send_interface="org.bluez.HeartRateWatcher1"/> + <allow send_interface="org.bluez.CyclingSpeedWatcher1"/> + </policy> + +</busconfig> diff --git a/meta-edison-distro/recipes-connectivity/bluez5/files/obex_set_dbus_session_service.patch b/meta-edison-distro/recipes-connectivity/bluez5/files/obex_set_dbus_session_service.patch new file mode 100644 index 0000000..4000aaf --- /dev/null +++ b/meta-edison-distro/recipes-connectivity/bluez5/files/obex_set_dbus_session_service.patch @@ -0,0 +1,10 @@ +--- a/obexd/src/obex.service.in 2014-10-30 14:40:00.832479049 +0100 ++++ b/obexd/src/obex.service.in 2014-10-30 14:40:41.032477622 +0100 +@@ -4,6 +4,7 @@ + [Service] + Type=dbus + BusName=org.bluez.obex ++Environment="DBUS_SESSION_BUS_ADDRESS=unix:path=/var/run/dbus/system_bus_socket" + ExecStart=@libexecdir@/obexd + + [Install] diff --git a/meta-edison-distro/recipes-connectivity/connman/connman.inc b/meta-edison-distro/recipes-connectivity/connman/connman.inc new file mode 100644 index 0000000..b3147c9 --- /dev/null +++ b/meta-edison-distro/recipes-connectivity/connman/connman.inc @@ -0,0 +1,215 @@ +SUMMARY = "A daemon for managing internet connections within embedded devices" +DESCRIPTION = "The ConnMan project provides a daemon for managing \ +internet connections within embedded devices running the Linux \ +operating system. The Connection Manager is designed to be slim and \ +to use as few resources as possible, so it can be easily integrated. \ +It is a fully modular system that can be extended, through plug-ins, \ +to support all kinds of wired or wireless technologies. Also, \ +configuration methods, like DHCP and domain name resolving, are \ +implemented using plug-ins." +HOMEPAGE = "http://connman.net/" +BUGTRACKER = "https://01.org/jira/browse/CM" +LICENSE = "GPLv2" +LIC_FILES_CHKSUM = "file://COPYING;md5=12f884d2ae1ff87c09e5b7ccc2c4ca7e \ + file://src/main.c;beginline=1;endline=20;md5=d6a1ac98a6791c5294e8a7f176ecd66d" + +DEPENDS = "dbus glib-2.0 ppp iptables" + +INC_PR = "r20" + +EXTRA_OECONF += "\ + ac_cv_path_WPASUPPLICANT=${sbindir}/wpa_supplicant \ + ac_cv_path_PPPD=${sbindir}/pppd \ + --enable-debug \ + --enable-loopback \ + --enable-ethernet \ + --enable-tools \ + --enable-test \ + --disable-polkit \ + --enable-client \ + ${@base_contains('DISTRO_FEATURES', 'systemd', '--with-systemdunitdir=${systemd_unitdir}/system/', '--with-systemdunitdir=', d)} \ +" + +PACKAGECONFIG ??= "wispr \ + ${@base_contains('DISTRO_FEATURES', 'wifi','wifi', '', d)} \ + ${@base_contains('DISTRO_FEATURES', 'bluetooth','bluetooth', '', d)} \ + ${@base_contains('DISTRO_FEATURES', '3g','3g', '', d)} \ +" + +# If you want ConnMan to support VPN, add following statement into +# local.conf or distro config +# PACKAGECONFIG_append_pn-connman = " openvpn vpnc l2tp pptp" + +PACKAGECONFIG[wifi] = "--enable-wifi, --disable-wifi, wpa-supplicant" +PACKAGECONFIG[bluetooth] = "--enable-bluetooth, --disable-bluetooth, bluez4" +PACKAGECONFIG[3g] = "--enable-ofono, --disable-ofono, ofono" +PACKAGECONFIG[tist] = "--enable-tist,--disable-tist," +PACKAGECONFIG[openvpn] = "--enable-openvpn --with-openvpn=${sbindir}/openvpn,--disable-openvpn,,openvpn" +PACKAGECONFIG[vpnc] = "--enable-vpnc --with-vpnc=${sbindir}/vpnc,--disable-vpnc,,vpnc" +PACKAGECONFIG[l2tp] = "--enable-l2tp --with-l2tp=${sbindir}/xl2tpd,--disable-l2tp,,xl2tpd" +PACKAGECONFIG[pptp] = "--enable-pptp --with-pptp=${sbindir}/pptp,--disable-pptp,,pptp-linux" +# WISPr support for logging into hotspots, requires TLS +PACKAGECONFIG[wispr] = "--enable-wispr,--disable-wispr,gnutls," + +INITSCRIPT_NAME = "connman" +INITSCRIPT_PARAMS = "start 05 5 2 3 . stop 22 0 1 6 ." + +python __anonymous () { + systemd_packages = "${PN}" + pkgconfig = d.getVar('PACKAGECONFIG', True) + if ('openvpn' or 'vpnc' or 'l2tp' or 'pptp') in pkgconfig.split(): + systemd_packages += " ${PN}-vpn" + d.setVar('SYSTEMD_PACKAGES', systemd_packages) +} + +SYSTEMD_SERVICE_${PN} = "connman.service" +SYSTEMD_SERVICE_${PN}-vpn = "connman-vpn.service" +SYSTEMD_WIRED_SETUP = "ExecStartPre=-${libdir}/connman/wired-setup" + +inherit autotools-brokensep pkgconfig systemd update-rc.d + +do_configure_append () { + sed -i "s#ExecStart=#${SYSTEMD_WIRED_SETUP}\nExecStart=#" ${S}/src/connman.service +} + +# This allows *everyone* to access ConnMan over DBus, without any access +# control. Really the at_console flag should work, which would mean that +# both this and the xuser patch can be dropped. +do_compile_append() { + sed -i -e s:deny:allow:g src/connman-dbus.conf + sed -i -e s:deny:allow:g vpn/vpn-dbus.conf +} + +do_install_append() { + if ${@base_contains('DISTRO_FEATURES','sysvinit','true','false',d)}; then + install -d ${D}${sysconfdir}/init.d + install -m 0755 ${WORKDIR}/connman ${D}${sysconfdir}/init.d/connman + sed -i s%@LIBDIR@%${libdir}% ${D}${sysconfdir}/init.d/connman + fi + + install -d ${D}${bindir} + install -m 0755 ${S}/tools/*-test ${D}${bindir} + if [ -e ${S}/tools/wispr ]; then + install -m 0755 ${S}/tools/wispr ${D}${bindir} + fi + install -m 0755 ${B}/client/connmanctl ${D}${bindir} + + # We don't need to package an empty directory + rmdir --ignore-fail-on-non-empty ${D}${libdir}/connman/scripts + + # Automake 1.12 won't install empty directories, but we need the + # plugins directory to be present for ownership + mkdir -p ${D}${libdir}/connman/plugins +} + +# These used to be plugins, but now they are core +RPROVIDES_${PN} = "\ + connman-plugin-loopback \ + connman-plugin-ethernet \ + ${@base_contains('PACKAGECONFIG', 'bluetooth','connman-plugin-bluetooth', '', d)} \ + ${@base_contains('PACKAGECONFIG', 'wifi','connman-plugin-wifi', '', d)} \ + ${@base_contains('PACKAGECONFIG', '3g','connman-plugin-ofono', '', d)} \ + " + +RDEPENDS_${PN} = "\ + dbus \ + ${@base_contains('PACKAGECONFIG', 'bluetooth', 'bluez4', '', d)} \ + ${@base_contains('PACKAGECONFIG', 'wifi','wpa-supplicant', '', d)} \ + ${@base_contains('PACKAGECONFIG', '3g','ofono', '', d)} \ + xuser-account \ + " + +PACKAGES_DYNAMIC += "^${PN}-plugin-.*" + +def add_rdepends(bb, d, file, pkg, depmap, multilib_prefix, add_insane_skip): + plugintype = pkg.split( '-' )[-1] + if plugintype in depmap: + rdepends = map(lambda x: multilib_prefix + x, \ + depmap[plugintype].split()) + d.setVar("RDEPENDS_%s" % pkg, " ".join(rdepends)) + if add_insane_skip: + d.appendVar("INSANE_SKIP_%s" % pkg, "dev-so") + +python populate_packages_prepend() { + depmap = dict(pppd="ppp") + multilib_prefix = (d.getVar("MLPREFIX", True) or "") + + hook = lambda file,pkg,x,y,z: \ + add_rdepends(bb, d, file, pkg, depmap, multilib_prefix, False) + plugin_dir = d.expand('${libdir}/connman/plugins/') + plugin_name = d.expand('${PN}-plugin-%s') + do_split_packages(d, plugin_dir, '^(.*).so$', plugin_name, \ + '${PN} plugin for %s', extra_depends='', hook=hook, prepend=True ) + + hook = lambda file,pkg,x,y,z: \ + add_rdepends(bb, d, file, pkg, depmap, multilib_prefix, True) + plugin_dir = d.expand('${libdir}/connman/plugins-vpn/') + plugin_name = d.expand('${PN}-plugin-vpn-%s') + do_split_packages(d, plugin_dir, '^(.*).so$', plugin_name, \ + '${PN} VPN plugin for %s', extra_depends='', hook=hook, prepend=True ) +} + +PACKAGES =+ "${PN}-tools ${PN}-tests ${PN}-client" + +FILES_${PN}-tools = "${bindir}/wispr" + +FILES_${PN}-tests = "${bindir}/*-test ${libdir}/${BPN}/test/*" +RDEPENDS_${PN}-tests = "python-dbus python-pygobject python-textutils python-subprocess python-fcntl python-netclient" + +FILES_${PN}-client = "${bindir}/connmanctl" + +FILES_${PN} = "${bindir}/* ${sbindir}/* ${libexecdir}/* ${libdir}/lib*.so.* \ + ${libdir}/connman/plugins \ + ${sysconfdir} ${sharedstatedir} ${localstatedir} \ + ${base_bindir}/* ${base_sbindir}/* ${base_libdir}/*.so* ${datadir}/${PN} \ + ${datadir}/dbus-1/system-services/*" + +FILES_${PN}-dbg += "${libdir}/connman/*/.debug" + +FILES_${PN}-dev += "${libdir}/connman/*/*.la" + +PACKAGES =+ "${PN}-vpn" + +SUMMARY_${PN}-vpn = "A daemon for managing VPN connections within embedded devices" +DESCRIPTION_${PN}-vpn = "The ConnMan VPN provides a daemon for \ +managing VPN connections within embedded devices running the Linux \ +operating system. The connman-vpnd handles all the VPN connections \ +and starts/stops VPN client processes when necessary. The connman-vpnd \ +provides a DBus API for managing VPN connections. All the different \ +VPN technogies are implemented using plug-ins." +FILES_${PN}-vpn += "${sbindir}/connman-vpnd \ + ${sysconfdir}/dbus-1/system.d/connman-vpn-dbus.conf \ + ${datadir}/dbus-1/system-services/net.connman.vpn.service \ + ${systemd_unitdir}/system/connman-vpn.service" + +SUMMARY_${PN}-plugin-vpn-openvpn = "An OpenVPN plugin for ConnMan VPN" +DESCRIPTION_${PN}-plugin-vpn-openvpn = "The ConnMan OpenVPN plugin uses openvpn client \ +to create a VPN connection to OpenVPN server." +FILES_${PN}-plugin-vpn-openvpn += "${libdir}/connman/scripts/openvpn-script \ + ${libdir}/connman/plugins-vpn/openvpn.so" +RDEPENDS_${PN}-plugin-vpn-openvpn += "${PN}-vpn" +RRECOMMENDS_${PN} += "${@base_contains('PACKAGECONFIG','openvpn','${PN}-plugin-vpn-openvpn', '', d)}" + +SUMMARY_${PN}-plugin-vpn-vpnc = "A vpnc plugin for ConnMan VPN" +DESCRIPTION_${PN}-plugin-vpn-vpnc = "The ConnMan vpnc plugin uses vpnc client \ +to create a VPN connection to Cisco3000 VPN Concentrator." +FILES_${PN}-plugin-vpn-vpnc += "${libdir}/connman/scripts/openconnect-script \ + ${libdir}/connman/plugins-vpn/vpnc.so" +RDEPENDS_${PN}-plugin-vpn-vpnc += "${PN}-vpn" +RRECOMMENDS_${PN} += "${@base_contains('PACKAGECONFIG','vpnc','${PN}-plugin-vpn-vpnc', '', d)}" + +SUMMARY_${PN}-plugin-vpn-l2tp = "A L2TP plugin for ConnMan VPN" +DESCRIPTION_${PN}-plugin-vpn-l2tp = "The ConnMan L2TP plugin uses xl2tpd daemon \ +to create a VPN connection to L2TP server." +FILES_${PN}-plugin-vpn-l2tp += "${libdir}/connman/scripts/libppp-plugin.so* \ + ${libdir}/connman/plugins-vpn/l2tp.so" +RDEPENDS_${PN}-plugin-vpn-l2tp += "${PN}-vpn" +RRECOMMENDS_${PN} += "${@base_contains('PACKAGECONFIG','l2tp','${PN}-plugin-vpn-l2tp', '', d)}" + +SUMMARY_${PN}-plugin-vpn-pptp = "A PPTP plugin for ConnMan VPN" +DESCRIPTION_${PN}-plugin-vpn-pptp = "The ConnMan PPTP plugin uses pptp-linux client \ +to create a VPN connection to PPTP server." +FILES_${PN}-plugin-vpn-pptp += "${libdir}/connman/scripts/libppp-plugin.so* \ + ${libdir}/connman/plugins-vpn/pptp.so" +RDEPENDS_${PN}-plugin-vpn-pptp += "${PN}-vpn" +RRECOMMENDS_${PN} += "${@base_contains('PACKAGECONFIG','pptp','${PN}-plugin-vpn-pptp', '', d)}" diff --git a/meta-edison-distro/recipes-connectivity/connman/connman/0001-plugin.h-Change-visibility-to-default-for-debug-symb.patch b/meta-edison-distro/recipes-connectivity/connman/connman/0001-plugin.h-Change-visibility-to-default-for-debug-symb.patch new file mode 100644 index 0000000..e6f03e6 --- /dev/null +++ b/meta-edison-distro/recipes-connectivity/connman/connman/0001-plugin.h-Change-visibility-to-default-for-debug-symb.patch @@ -0,0 +1,35 @@ +From 4ddaf78dad5a9ee4a0658235f71b75132192123e Mon Sep 17 00:00:00 2001 +From: Khem Raj <raj.khem@gmail.com> +Date: Sat, 7 Apr 2012 18:52:12 -0700 +Subject: [PATCH] plugin.h: Change visibility to default for debug symbols + +gold refuses to link in undefined weak symbols which +have hidden visibility + +Signed-off-by: Khem Raj <raj.khem@gmail.com> + + +Upstream-Status: Pending +--- + include/plugin.h | 4 ++-- + 1 files changed, 2 insertions(+), 2 deletions(-) + +diff --git a/include/plugin.h b/include/plugin.h +index 692a4e5..a9361c3 100644 +--- a/include/plugin.h ++++ b/include/plugin.h +@@ -89,9 +89,9 @@ struct connman_plugin_desc { + #else + #define CONNMAN_PLUGIN_DEFINE(name, description, version, priority, init, exit) \ + extern struct connman_debug_desc __start___debug[] \ +- __attribute__ ((weak, visibility("hidden"))); \ ++ __attribute__ ((weak, visibility("default"))); \ + extern struct connman_debug_desc __stop___debug[] \ +- __attribute__ ((weak, visibility("hidden"))); \ ++ __attribute__ ((weak, visibility("default"))); \ + extern struct connman_plugin_desc connman_plugin_desc \ + __attribute__ ((visibility("default"))); \ + struct connman_plugin_desc connman_plugin_desc = { \ +-- +1.7.5.4 + diff --git a/meta-edison-distro/recipes-connectivity/connman/connman/add_xuser_dbus_permission.patch b/meta-edison-distro/recipes-connectivity/connman/connman/add_xuser_dbus_permission.patch new file mode 100644 index 0000000..707b3ca --- /dev/null +++ b/meta-edison-distro/recipes-connectivity/connman/connman/add_xuser_dbus_permission.patch @@ -0,0 +1,21 @@ +Because Poky doesn't support at_console we need to special-case the session +user. + +Upstream-Status: Inappropriate [configuration] + +Signed-off-by: Ross Burton <ross.burton@intel.com> + +diff --git a/src/connman-dbus.conf b/src/connman-dbus.conf +index 98a773e..466809c 100644 +--- a/src/connman-dbus.conf ++++ b/src/connman-dbus.conf +@@ -8,6 +8,9 @@ + <allow send_interface="net.connman.Counter"/> + <allow send_interface="net.connman.Notification"/> + </policy> ++ <policy user="xuser"> ++ <allow send_destination="net.connman"/> ++ </policy> + <policy at_console="true"> + <allow send_destination="net.connman"/> + </policy> diff --git a/meta-edison-distro/recipes-connectivity/connman/connman/connman b/meta-edison-distro/recipes-connectivity/connman/connman/connman new file mode 100644 index 0000000..bf7a94a --- /dev/null +++ b/meta-edison-distro/recipes-connectivity/connman/connman/connman @@ -0,0 +1,83 @@ +#!/bin/sh + +DAEMON=/usr/sbin/connmand +PIDFILE=/var/run/connmand.pid +DESC="Connection Manager" + +if [ -f /etc/default/connman ] ; then + . /etc/default/connman +fi + +set -e + +nfsroot=0 + +exec 9<&0 < /proc/mounts +while read dev mtpt fstype rest; do + if test $mtpt = "/" ; then + case $fstype in + nfs | nfs4) + nfsroot=1 + break + ;; + *) + ;; + esac + fi +done + +do_start() { + EXTRA_PARAM="" + if test $nfsroot -eq 1 ; then + NET_DEVS=`cat /proc/net/dev | sed -ne 's/^\([a-zA-Z0-9 ]*\):.*$/\1/p'` + NET_ADDR=`cat /proc/cmdline | sed -ne 's/^.*ip=\([^ :]*\).*$/\1/p'` + + if [ ! -z "$NET_ADDR" ]; then + if [ "$NET_ADDR" = dhcp ]; then + ethn=`ifconfig | grep "^eth" | sed -e "s/\(eth[0-9]\)\(.*\)/\1/"` + if [ ! -z "$ethn" ]; then + EXTRA_PARAM="-I $ethn" + fi + else + for i in $NET_DEVS; do + ADDR=`ifconfig $i | sed 's/addr://g' | sed -ne 's/^.*inet \([0-9.]*\) .*$/\1/p'` + if [ "$NET_ADDR" = "$ADDR" ]; then + EXTRA_PARAM="-I $i" + break + fi + done + fi + fi + fi + if [ -f @LIBDIR@/connman/wired-setup ] ; then + . @LIBDIR@/connman/wired-setup + fi + $DAEMON $EXTRA_PARAM +} + +do_stop() { + start-stop-daemon --stop --name connmand --quiet +} + +case "$1" in + start) + echo "Starting $DESC" + do_start + ;; + stop) + echo "Stopping $DESC" + do_stop + ;; + restart|force-reload) + echo "Restarting $DESC" + do_stop + sleep 1 + do_start + ;; + *) + echo "Usage: $0 {start|stop|restart|force-reload}" >&2 + exit 1 + ;; +esac + +exit 0 diff --git a/meta-edison-distro/recipes-connectivity/connman/connman/disable_p2p.patch b/meta-edison-distro/recipes-connectivity/connman/connman/disable_p2p.patch new file mode 100644 index 0000000..6cce2e3 --- /dev/null +++ b/meta-edison-distro/recipes-connectivity/connman/connman/disable_p2p.patch @@ -0,0 +1,15 @@ +--- a/gsupplicant/supplicant.c ++++ b/gsupplicant/supplicant.c +@@ -1963,8 +1963,11 @@ + if (g_strcmp0(key, "Capabilities") == 0) { + supplicant_dbus_property_foreach(iter, interface_capability, + interface); ++#if 0 ++ /* Disable temporarely p2p */ + if (interface->mode_capa & G_SUPPLICANT_CAPABILITY_MODE_P2P) + interface->p2p_support = true; ++#endif + } else if (g_strcmp0(key, "State") == 0) { + const char *str = NULL; + + diff --git a/meta-edison-distro/recipes-connectivity/connman/connman_1.27.bb b/meta-edison-distro/recipes-connectivity/connman/connman_1.27.bb new file mode 100644 index 0000000..70993ac --- /dev/null +++ b/meta-edison-distro/recipes-connectivity/connman/connman_1.27.bb @@ -0,0 +1,11 @@ +require connman.inc + +SRC_URI = "${KERNELORG_MIRROR}/linux/network/${BPN}/${BP}.tar.xz \ + file://0001-plugin.h-Change-visibility-to-default-for-debug-symb.patch \ + file://add_xuser_dbus_permission.patch \ + file://disable_p2p.patch \ + file://connman \ + " +SRC_URI[md5sum] = "4f4b3be54da000c65b153c1b9afcadf2" +SRC_URI[sha256sum] = "13997824c076af150c68d6d79e48277216e8192278a5c6615cfd4905d65600f5" +RRECOMMENDS_${PN} = "connman-conf" diff --git a/meta-edison-distro/recipes-connectivity/connman/connman_1.27.bbappend b/meta-edison-distro/recipes-connectivity/connman/connman_1.27.bbappend new file mode 100644 index 0000000..80e7b38 --- /dev/null +++ b/meta-edison-distro/recipes-connectivity/connman/connman_1.27.bbappend @@ -0,0 +1,35 @@ + + +LIC_FILES_CHKSUM = "file://COPYING;md5=12f884d2ae1ff87c09e5b7ccc2c4ca7e \ + file://src/main.c;beginline=1;endline=20;md5=486a279a6ab0c8d152bcda3a5b5edc36" + +PACKAGECONFIG ??= "wispr \ + ${@base_contains('DISTRO_FEATURES', 'wifi','wifi', '', d)} \ + ${@base_contains('DISTRO_FEATURES', 'bluetooth','bluetooth', '', d)} \ +" + +PACKAGECONFIG[bluetooth] = "--enable-bluetooth, --disable-bluetooth, bluez5" +PACKAGECONFIG[3g] = "" + +SYSTEMD_AUTO_ENABLE = "disable" + +do_configure_append () { + # Do not usb0 as it is used for SSH connection + sed -i "s/ExecStart=.*/& --nodevice=usb0/" ${S}/src/connman.service +} + + +# These used to be plugins, but now they are core +RPROVIDES_${PN} = "\ + connman-plugin-loopback \ + connman-plugin-ethernet \ + ${@base_contains('PACKAGECONFIG', 'bluetooth','connman-plugin-bluetooth', '', d)} \ + ${@base_contains('PACKAGECONFIG', 'wifi','connman-plugin-wifi', '', d)} \ + " + +RDEPENDS_${PN} = "\ + dbus \ + ${@base_contains('PACKAGECONFIG', 'bluetooth', 'bluez5', '', d)} \ + ${@base_contains('PACKAGECONFIG', 'wifi','wpa-supplicant', '', d)} \ + " + diff --git a/meta-edison-distro/recipes-connectivity/hostapd/files/defconfig b/meta-edison-distro/recipes-connectivity/hostapd/files/defconfig new file mode 100644 index 0000000..2789640 --- /dev/null +++ b/meta-edison-distro/recipes-connectivity/hostapd/files/defconfig @@ -0,0 +1,145 @@ +# Example hostapd build time configuration +# +# This file lists the configuration options that are used when building the +# hostapd binary. All lines starting with # are ignored. Configuration option +# lines must be commented out complete, if they are not to be included, i.e., +# just setting VARIABLE=n is not disabling that variable. +# +# This file is included in Makefile, so variables like CFLAGS and LIBS can also +# be modified from here. In most cass, these lines should use += in order not +# to override previous values of the variables. + +# Driver interface for Host AP driver +CONFIG_DRIVER_HOSTAP=y + +# Driver interface for wired authenticator +CONFIG_DRIVER_WIRED=y + +# Driver interface for madwifi driver +#CONFIG_DRIVER_MADWIFI=y +#CFLAGS += -I../../madwifi # change to the madwifi source directory + +# Driver interface for Prism54 driver +CONFIG_DRIVER_PRISM54=y + +# Driver interface for drivers using the nl80211 kernel interface +CONFIG_DRIVER_NL80211=y +CONFIG_LIBNL32=y +# driver_nl80211.c requires a rather new libnl (version 1.1) which may not be +# shipped with your distribution yet. If that is the case, you need to build +# newer libnl version and point the hostapd build to use it. +#LIBNL=/usr/src/libnl +#CFLAGS += -I$(LIBNL)/include +#LIBS += -L$(LIBNL)/lib + +# Driver interface for FreeBSD net80211 layer (e.g., Atheros driver) +#CONFIG_DRIVER_BSD=y +#CFLAGS += -I/usr/local/include +#LIBS += -L/usr/local/lib + +# Driver interface for no driver (e.g., RADIUS server only) +#CONFIG_DRIVER_NONE=y + +# IEEE 802.11F/IAPP +CONFIG_IAPP=y + +# WPA2/IEEE 802.11i RSN pre-authentication +CONFIG_RSN_PREAUTH=y + +# PeerKey handshake for Station to Station Link (IEEE 802.11e DLS) +CONFIG_PEERKEY=y + +# IEEE 802.11w (management frame protection) +# This version is an experimental implementation based on IEEE 802.11w/D1.0 +# draft and is subject to change since the standard has not yet been finalized. +# Driver support is also needed for IEEE 802.11w. +#CONFIG_IEEE80211W=y + +# Integrated EAP server +CONFIG_EAP=y + +# EAP-MD5 for the integrated EAP server +CONFIG_EAP_MD5=y + +# EAP-TLS for the integrated EAP server +CONFIG_EAP_TLS=y + +# EAP-MSCHAPv2 for the integrated EAP server +CONFIG_EAP_MSCHAPV2=y + +# EAP-PEAP for the integrated EAP server +CONFIG_EAP_PEAP=y + +# EAP-GTC for the integrated EAP server +CONFIG_EAP_GTC=y + +# EAP-TTLS for the integrated EAP server +CONFIG_EAP_TTLS=y + +# EAP-SIM for the integrated EAP server +#CONFIG_EAP_SIM=y + +# EAP-AKA for the integrated EAP server +#CONFIG_EAP_AKA=y + +# EAP-AKA' for the integrated EAP server +# This requires CONFIG_EAP_AKA to be enabled, too. +#CONFIG_EAP_AKA_PRIME=y + +# EAP-PAX for the integrated EAP server +#CONFIG_EAP_PAX=y + +# EAP-PSK for the integrated EAP server (this is _not_ needed for WPA-PSK) +#CONFIG_EAP_PSK=y + +# EAP-SAKE for the integrated EAP server +#CONFIG_EAP_SAKE=y + +# EAP-GPSK for the integrated EAP server +#CONFIG_EAP_GPSK=y +# Include support for optional SHA256 cipher suite in EAP-GPSK +#CONFIG_EAP_GPSK_SHA256=y + +# EAP-FAST for the integrated EAP server +# Note: Default OpenSSL package does not include support for all the +# functionality needed for EAP-FAST. If EAP-FAST is enabled with OpenSSL, +# the OpenSSL library must be patched (openssl-0.9.9-session-ticket.patch) +# to add the needed functions. +#CONFIG_EAP_FAST=y + +# Wi-Fi Protected Setup (WPS) +CONFIG_WPS=y +# Enable UPnP support for external WPS Registrars +#CONFIG_WPS_UPNP=y + +# EAP-IKEv2 +#CONFIG_EAP_IKEV2=y + +# Trusted Network Connect (EAP-TNC) +#CONFIG_EAP_TNC=y + +# PKCS#12 (PFX) support (used to read private key and certificate file from +# a file that usually has extension .p12 or .pfx) +CONFIG_PKCS12=y + +# RADIUS authentication server. This provides access to the integrated EAP +# server from external hosts using RADIUS. +CONFIG_RADIUS_SERVER=y + +# Build IPv6 support for RADIUS operations +CONFIG_IPV6=y + +# IEEE Std 802.11r-2008 (Fast BSS Transition) +#CONFIG_IEEE80211R=y + +# Use the hostapd's IEEE 802.11 authentication (ACL), but without +# the IEEE 802.11 Management capability (e.g., madwifi or FreeBSD/net80211) +CONFIG_DRIVER_RADIUS_ACL=y + +# IEEE 802.11n (High Throughput) support +CONFIG_IEEE80211N=y + +# Remove debugging code that is printing out debug messages to stdout. +# This can be used to reduce the size of the hostapd considerably if debugging +# code is not needed. +#CONFIG_NO_STDOUT_DEBUG=y diff --git a/meta-edison-distro/recipes-connectivity/hostapd/files/hostapd.conf-sane b/meta-edison-distro/recipes-connectivity/hostapd/files/hostapd.conf-sane new file mode 100644 index 0000000..3e7d794 --- /dev/null +++ b/meta-edison-distro/recipes-connectivity/hostapd/files/hostapd.conf-sane @@ -0,0 +1,1662 @@ +##### hostapd configuration file ############################################## +# Empty lines and lines starting with # are ignored + +# AP netdevice name (without 'ap' postfix, i.e., wlan0 uses wlan0ap for +# management frames); ath0 for madwifi +interface=wlan0 + +# In case of madwifi, atheros, and nl80211 driver interfaces, an additional +# configuration parameter, bridge, may be used to notify hostapd if the +# interface is included in a bridge. This parameter is not used with Host AP +# driver. If the bridge parameter is not set, the drivers will automatically +# figure out the bridge interface (assuming sysfs is enabled and mounted to +# /sys) and this parameter may not be needed. +# +# For nl80211, this parameter can be used to request the AP interface to be +# added to the bridge automatically (brctl may refuse to do this before hostapd +# has been started to change the interface mode). If needed, the bridge +# interface is also created. +#bridge=br0 + +# Driver interface type (hostap/wired/madwifi/test/none/nl80211/bsd); +# default: hostap). nl80211 is used with all Linux mac80211 drivers. +# Use driver=none if building hostapd as a standalone RADIUS server that does +# not control any wireless/wired driver. +driver=nl80211 + +# hostapd event logger configuration +# +# Two output method: syslog and stdout (only usable if not forking to +# background). +# +# Module bitfield (ORed bitfield of modules that will be logged; -1 = all +# modules): +# bit 0 (1) = IEEE 802.11 +# bit 1 (2) = IEEE 802.1X +# bit 2 (4) = RADIUS +# bit 3 (8) = WPA +# bit 4 (16) = driver interface +# bit 5 (32) = IAPP +# bit 6 (64) = MLME +# +# Levels (minimum value for logged events): +# 0 = verbose debugging +# 1 = debugging +# 2 = informational messages +# 3 = notification +# 4 = warning +# +logger_syslog=-1 +logger_syslog_level=2 +logger_stdout=-1 +logger_stdout_level=2 + +# Interface for separate control program. If this is specified, hostapd +# will create this directory and a UNIX domain socket for listening to requests +# from external programs (CLI/GUI, etc.) for status information and +# configuration. The socket file will be named based on the interface name, so +# multiple hostapd processes/interfaces can be run at the same time if more +# than one interface is used. +# /var/run/hostapd is the recommended directory for sockets and by default, +# hostapd_cli will use it when trying to connect with hostapd. +ctrl_interface=/var/run/hostapd + +# Access control for the control interface can be configured by setting the +# directory to allow only members of a group to use sockets. This way, it is +# possible to run hostapd as root (since it needs to change network +# configuration and open raw sockets) and still allow GUI/CLI components to be +# run as non-root users. However, since the control interface can be used to +# change the network configuration, this access needs to be protected in many +# cases. By default, hostapd is configured to use gid 0 (root). If you +# want to allow non-root users to use the contron interface, add a new group +# and change this value to match with that group. Add users that should have +# control interface access to this group. +# +# This variable can be a group name or gid. +#ctrl_interface_group=wheel +ctrl_interface_group=0 + + +##### IEEE 802.11 related configuration ####################################### + +# SSID to be used in IEEE 802.11 management frames +# The SSID is dynamically modified by the script /etc/hostapd/hostpad_ssid.sh +# to get a unique SSID among mutiple Edison boards (see the content of this script) +# See the header of this script if you want to disable this dynamic setting +# and to set a manual and static SSID +ssid=edison_ap + +# UTF-8 SSID: Whether the SSID is to be interpreted using UTF-8 encoding +#utf8_ssid=1 + +# Country code (ISO/IEC 3166-1). Used to set regulatory domain. +# Set as needed to indicate country in which device is operating. +# This can limit available channels and transmit power. +#country_code=US + +# Enable IEEE 802.11d. This advertises the country_code and the set of allowed +# channels and transmit power levels based on the regulatory limits. The +# country_code setting must be configured with the correct country for +# IEEE 802.11d functions. +# (default: 0 = disabled) +#ieee80211d=1 + +# Enable IEEE 802.11h. This enables radar detection and DFS support if +# available. DFS support is required on outdoor 5 GHz channels in most countries +# of the world. This can be used only with ieee80211d=1. +# (default: 0 = disabled) +#ieee80211h=1 + +# Operation mode (a = IEEE 802.11a, b = IEEE 802.11b, g = IEEE 802.11g, +# ad = IEEE 802.11ad (60 GHz); a/g options are used with IEEE 802.11n, too, to +# specify band) +# Default: IEEE 802.11b +hw_mode=g + +# Channel number (IEEE 802.11) +# (default: 0, i.e., not set) +# Please note that some drivers do not use this value from hostapd and the +# channel will need to be configured separately with iwconfig. +# +# If CONFIG_ACS build option is enabled, the channel can be selected +# automatically at run time by setting channel=acs_survey or channel=0, both of +# which will enable the ACS survey based algorithm. +channel=1 + +# ACS tuning - Automatic Channel Selection +# See: http://wireless.kernel.org/en/users/Documentation/acs +# +# You can customize the ACS survey algorithm with following variables: +# +# acs_num_scans requirement is 1..100 - number of scans to be performed that +# are used to trigger survey data gathering of an underlying device driver. +# Scans are passive and typically take a little over 100ms (depending on the +# driver) on each available channel for given hw_mode. Increasing this value +# means sacrificing startup time and gathering more data wrt channel +# interference that may help choosing a better channel. This can also help fine +# tune the ACS scan time in case a driver has different scan dwell times. +# +# Defaults: +#acs_num_scans=5 + +# Beacon interval in kus (1.024 ms) (default: 100; range 15..65535) +beacon_int=100 + +# DTIM (delivery traffic information message) period (range 1..255): +# number of beacons between DTIMs (1 = every beacon includes DTIM element) +# (default: 2) +dtim_period=2 + +# Maximum number of stations allowed in station table. New stations will be +# rejected after the station table is full. IEEE 802.11 has a limit of 2007 +# different association IDs, so this number should not be larger than that. +# (default: 2007) +max_num_sta=255 + +# RTS/CTS threshold; 2347 = disabled (default); range 0..2347 +# If this field is not included in hostapd.conf, hostapd will not control +# RTS threshold and 'iwconfig wlan# rts <val>' can be used to set it. +rts_threshold=2347 + +# Fragmentation threshold; 2346 = disabled (default); range 256..2346 +# If this field is not included in hostapd.conf, hostapd will not control +# fragmentation threshold and 'iwconfig wlan# frag <val>' can be used to set +# it. +fragm_threshold=2346 + +# Rate configuration +# Default is to enable all rates supported by the hardware. This configuration +# item allows this list be filtered so that only the listed rates will be left +# in the list. If the list is empty, all rates are used. This list can have +# entries that are not in the list of rates the hardware supports (such entries +# are ignored). The entries in this list are in 100 kbps, i.e., 11 Mbps = 110. +# If this item is present, at least one rate have to be matching with the rates +# hardware supports. +# default: use the most common supported rate setting for the selected +# hw_mode (i.e., this line can be removed from configuration file in most +# cases) +#supported_rates=10 20 55 110 60 90 120 180 240 360 480 540 + +# Basic rate set configuration +# List of rates (in 100 kbps) that are included in the basic rate set. +# If this item is not included, usually reasonable default set is used. +#basic_rates=10 20 +#basic_rates=10 20 55 110 +#basic_rates=60 120 240 + +# Short Preamble +# This parameter can be used to enable optional use of short preamble for +# frames sent at 2 Mbps, 5.5 Mbps, and 11 Mbps to improve network performance. +# This applies only to IEEE 802.11b-compatible networks and this should only be +# enabled if the local hardware supports use of short preamble. If any of the +# associated STAs do not support short preamble, use of short preamble will be +# disabled (and enabled when such STAs disassociate) dynamically. +# 0 = do not allow use of short preamble (default) +# 1 = allow use of short preamble +#preamble=1 + +# Station MAC address -based authentication +# Please note that this kind of access control requires a driver that uses +# hostapd to take care of management frame processing and as such, this can be +# used with driver=hostap or driver=nl80211, but not with driver=madwifi. +# 0 = accept unless in deny list +# 1 = deny unless in accept list +# 2 = use external RADIUS server (accept/deny lists are searched first) +macaddr_acl=0 + +# Accept/deny lists are read from separate files (containing list of +# MAC addresses, one per line). Use absolute path name to make sure that the +# files can be read on SIGHUP configuration reloads. +#accept_mac_file=/etc/hostapd.accept +#deny_mac_file=/etc/hostapd.deny + +# IEEE 802.11 specifies two authentication algorithms. hostapd can be +# configured to allow both of these or only one. Open system authentication +# should be used with IEEE 802.1X. +# Bit fields of allowed authentication algorithms: +# bit 0 = Open System Authentication +# bit 1 = Shared Key Authentication (requires WEP) +auth_algs=1 + +# Send empty SSID in beacons and ignore probe request frames that do not +# specify full SSID, i.e., require stations to know SSID. +# default: disabled (0) +# 1 = send empty (length=0) SSID in beacon and ignore probe request for +# broadcast SSID +# 2 = clear SSID (ASCII 0), but keep the original length (this may be required +# with some clients that do not support empty SSID) and ignore probe +# requests for broadcast SSID +ignore_broadcast_ssid=0 + +# Additional vendor specfic elements for Beacon and Probe Response frames +# This parameter can be used to add additional vendor specific element(s) into +# the end of the Beacon and Probe Response frames. The format for these +# element(s) is a hexdump of the raw information elements (id+len+payload for +# one or more elements) +#vendor_elements=dd0411223301 + +# TX queue parameters (EDCF / bursting) +# tx_queue_<queue name>_<param> +# queues: data0, data1, data2, data3, after_beacon, beacon +# (data0 is the highest priority queue) +# parameters: +# aifs: AIFS (default 2) +# cwmin: cwMin (1, 3, 7, 15, 31, 63, 127, 255, 511, 1023) +# cwmax: cwMax (1, 3, 7, 15, 31, 63, 127, 255, 511, 1023); cwMax >= cwMin +# burst: maximum length (in milliseconds with precision of up to 0.1 ms) for +# bursting +# +# Default WMM parameters (IEEE 802.11 draft; 11-03-0504-03-000e): +# These parameters are used by the access point when transmitting frames +# to the clients. +# +# Low priority / AC_BK = background +#tx_queue_data3_aifs=7 +#tx_queue_data3_cwmin=15 +#tx_queue_data3_cwmax=1023 +#tx_queue_data3_burst=0 +# Note: for IEEE 802.11b mode: cWmin=31 cWmax=1023 burst=0 +# +# Normal priority / AC_BE = best effort +#tx_queue_data2_aifs=3 +#tx_queue_data2_cwmin=15 +#tx_queue_data2_cwmax=63 +#tx_queue_data2_burst=0 +# Note: for IEEE 802.11b mode: cWmin=31 cWmax=127 burst=0 +# +# High priority / AC_VI = video +#tx_queue_data1_aifs=1 +#tx_queue_data1_cwmin=7 +#tx_queue_data1_cwmax=15 +#tx_queue_data1_burst=3.0 +# Note: for IEEE 802.11b mode: cWmin=15 cWmax=31 burst=6.0 +# +# Highest priority / AC_VO = voice +#tx_queue_data0_aifs=1 +#tx_queue_data0_cwmin=3 +#tx_queue_data0_cwmax=7 +#tx_queue_data0_burst=1.5 +# Note: for IEEE 802.11b mode: cWmin=7 cWmax=15 burst=3.3 + +# 802.1D Tag (= UP) to AC mappings +# WMM specifies following mapping of data frames to different ACs. This mapping +# can be configured using Linux QoS/tc and sch_pktpri.o module. +# 802.1D Tag 802.1D Designation Access Category WMM Designation +# 1 BK AC_BK Background +# 2 - AC_BK Background +# 0 BE AC_BE Best Effort +# 3 EE AC_BE Best Effort +# 4 CL AC_VI Video +# 5 VI AC_VI Video +# 6 VO AC_VO Voice +# 7 NC AC_VO Voice +# Data frames with no priority information: AC_BE +# Management frames: AC_VO +# PS-Poll frames: AC_BE + +# Default WMM parameters (IEEE 802.11 draft; 11-03-0504-03-000e): +# for 802.11a or 802.11g networks +# These parameters are sent to WMM clients when they associate. +# The parameters will be used by WMM clients for frames transmitted to the +# access point. +# +# note - txop_limit is in units of 32microseconds +# note - acm is admission control mandatory flag. 0 = admission control not +# required, 1 = mandatory +# note - here cwMin and cmMax are in exponent form. the actual cw value used +# will be (2^n)-1 where n is the value given here +# +wmm_enabled=1 +# +# WMM-PS Unscheduled Automatic Power Save Delivery [U-APSD] +# Enable this flag if U-APSD supported outside hostapd (eg., Firmware/driver) +#uapsd_advertisement_enabled=1 +# +# Low priority / AC_BK = background +wmm_ac_bk_cwmin=4 +wmm_ac_bk_cwmax=10 +wmm_ac_bk_aifs=7 +wmm_ac_bk_txop_limit=0 +wmm_ac_bk_acm=0 +# Note: for IEEE 802.11b mode: cWmin=5 cWmax=10 +# +# Normal priority / AC_BE = best effort +wmm_ac_be_aifs=3 +wmm_ac_be_cwmin=4 +wmm_ac_be_cwmax=10 +wmm_ac_be_txop_limit=0 +wmm_ac_be_acm=0 +# Note: for IEEE 802.11b mode: cWmin=5 cWmax=7 +# +# High priority / AC_VI = video +wmm_ac_vi_aifs=2 +wmm_ac_vi_cwmin=3 +wmm_ac_vi_cwmax=4 +wmm_ac_vi_txop_limit=94 +wmm_ac_vi_acm=0 +# Note: for IEEE 802.11b mode: cWmin=4 cWmax=5 txop_limit=188 +# +# Highest priority / AC_VO = voice +wmm_ac_vo_aifs=2 +wmm_ac_vo_cwmin=2 +wmm_ac_vo_cwmax=3 +wmm_ac_vo_txop_limit=47 +wmm_ac_vo_acm=0 +# Note: for IEEE 802.11b mode: cWmin=3 cWmax=4 burst=102 + +# Static WEP key configuration +# +# The key number to use when transmitting. +# It must be between 0 and 3, and the corresponding key must be set. +# default: not set +#wep_default_key=0 +# The WEP keys to use. +# A key may be a quoted string or unquoted hexadecimal digits. +# The key length should be 5, 13, or 16 characters, or 10, 26, or 32 +# digits, depending on whether 40-bit (64-bit), 104-bit (128-bit), or +# 128-bit (152-bit) WEP is used. +# Only the default key must be supplied; the others are optional. +# default: not set +#wep_key0=123456789a +#wep_key1="vwxyz" +#wep_key2=0102030405060708090a0b0c0d +#wep_key3=".2.4.6.8.0.23" + +# Station inactivity limit +# +# If a station does not send anything in ap_max_inactivity seconds, an +# empty data frame is sent to it in order to verify whether it is +# still in range. If this frame is not ACKed, the station will be +# disassociated and then deauthenticated. This feature is used to +# clear station table of old entries when the STAs move out of the +# range. +# +# The station can associate again with the AP if it is still in range; +# this inactivity poll is just used as a nicer way of verifying +# inactivity; i.e., client will not report broken connection because +# disassociation frame is not sent immediately without first polling +# the STA with a data frame. +# default: 300 (i.e., 5 minutes) +#ap_max_inactivity=300 +# +# The inactivity polling can be disabled to disconnect stations based on +# inactivity timeout so that idle stations are more likely to be disconnected +# even if they are still in range of the AP. This can be done by setting +# skip_inactivity_poll to 1 (default 0). +#skip_inactivity_poll=0 + +# Disassociate stations based on excessive transmission failures or other +# indications of connection loss. This depends on the driver capabilities and +# may not be available with all drivers. +#disassoc_low_ack=1 + +# Maximum allowed Listen Interval (how many Beacon periods STAs are allowed to +# remain asleep). Default: 65535 (no limit apart from field size) +#max_listen_interval=100 + +# WDS (4-address frame) mode with per-station virtual interfaces +# (only supported with driver=nl80211) +# This mode allows associated stations to use 4-address frames to allow layer 2 +# bridging to be used. +#wds_sta=1 + +# If bridge parameter is set, the WDS STA interface will be added to the same +# bridge by default. This can be overridden with the wds_bridge parameter to +# use a separate bridge. +#wds_bridge=wds-br0 + +# Start the AP with beaconing disabled by default. +#start_disabled=0 + +# Client isolation can be used to prevent low-level bridging of frames between +# associated stations in the BSS. By default, this bridging is allowed. +#ap_isolate=1 + +# Fixed BSS Load value for testing purposes +# This field can be used to configure hostapd to add a fixed BSS Load element +# into Beacon and Probe Response frames for testing purposes. The format is +# <station count>:<channel utilization>:<available admission capacity> +#bss_load_test=12:80:20000 + +##### IEEE 802.11n related configuration ###################################### + +# ieee80211n: Whether IEEE 802.11n (HT) is enabled +# 0 = disabled (default) +# 1 = enabled +# Note: You will also need to enable WMM for full HT functionality. +ieee80211n=1 + +# ht_capab: HT capabilities (list of flags) +# LDPC coding capability: [LDPC] = supported +# Supported channel width set: [HT40-] = both 20 MHz and 40 MHz with secondary +# channel below the primary channel; [HT40+] = both 20 MHz and 40 MHz +# with secondary channel below the primary channel +# (20 MHz only if neither is set) +# Note: There are limits on which channels can be used with HT40- and +# HT40+. Following table shows the channels that may be available for +# HT40- and HT40+ use per IEEE 802.11n Annex J: +# freq HT40- HT40+ +# 2.4 GHz 5-13 1-7 (1-9 in Europe/Japan) +# 5 GHz 40,48,56,64 36,44,52,60 +# (depending on the location, not all of these channels may be available +# for use) +# Please note that 40 MHz channels may switch their primary and secondary +# channels if needed or creation of 40 MHz channel maybe rejected based +# on overlapping BSSes. These changes are done automatically when hostapd +# is setting up the 40 MHz channel. +# Spatial Multiplexing (SM) Power Save: [SMPS-STATIC] or [SMPS-DYNAMIC] +# (SMPS disabled if neither is set) +# HT-greenfield: [GF] (disabled if not set) +# Short GI for 20 MHz: [SHORT-GI-20] (disabled if not set) +# Short GI for 40 MHz: [SHORT-GI-40] (disabled if not set) +# Tx STBC: [TX-STBC] (disabled if not set) +# Rx STBC: [RX-STBC1] (one spatial stream), [RX-STBC12] (one or two spatial +# streams), or [RX-STBC123] (one, two, or three spatial streams); Rx STBC +# disabled if none of these set +# HT-delayed Block Ack: [DELAYED-BA] (disabled if not set) +# Maximum A-MSDU length: [MAX-AMSDU-7935] for 7935 octets (3839 octets if not +# set) +# DSSS/CCK Mode in 40 MHz: [DSSS_CCK-40] = allowed (not allowed if not set) +# PSMP support: [PSMP] (disabled if not set) +# L-SIG TXOP protection support: [LSIG-TXOP-PROT] (disabled if not set) +#ht_capab=[HT40-][SHORT-GI-20][SHORT-GI-40] + +# Require stations to support HT PHY (reject association if they do not) +#require_ht=1 + +# If set non-zero, require stations to perform scans of overlapping +# channels to test for stations which would be affected by 40 MHz traffic. +# This parameter sets the interval in seconds between these scans. This +# is useful only for testing that stations properly set the OBSS interval, +# since the other parameters in the OBSS scan parameters IE are set to 0. +#obss_interval=0 + +##### IEEE 802.11ac related configuration ##################################### + +# ieee80211ac: Whether IEEE 802.11ac (VHT) is enabled +# 0 = disabled (default) +# 1 = enabled +# Note: You will also need to enable WMM for full VHT functionality. +#ieee80211ac=1 + +# vht_capab: VHT capabilities (list of flags) +# +# vht_max_mpdu_len: [MAX-MPDU-7991] [MAX-MPDU-11454] +# Indicates maximum MPDU length +# 0 = 3895 octets (default) +# 1 = 7991 octets +# 2 = 11454 octets +# 3 = reserved +# +# supported_chan_width: [VHT160] [VHT160-80PLUS80] +# Indicates supported Channel widths +# 0 = 160 MHz & 80+80 channel widths are not supported (default) +# 1 = 160 MHz channel width is supported +# 2 = 160 MHz & 80+80 channel widths are supported +# 3 = reserved +# +# Rx LDPC coding capability: [RXLDPC] +# Indicates support for receiving LDPC coded pkts +# 0 = Not supported (default) +# 1 = Supported +# +# Short GI for 80 MHz: [SHORT-GI-80] +# Indicates short GI support for reception of packets transmitted with TXVECTOR +# params format equal to VHT and CBW = 80Mhz +# 0 = Not supported (default) +# 1 = Supported +# +# Short GI for 160 MHz: [SHORT-GI-160] +# Indicates short GI support for reception of packets transmitted with TXVECTOR +# params format equal to VHT and CBW = 160Mhz +# 0 = Not supported (default) +# 1 = Supported +# +# Tx STBC: [TX-STBC-2BY1] +# Indicates support for the transmission of at least 2x1 STBC +# 0 = Not supported (default) +# 1 = Supported +# +# Rx STBC: [RX-STBC-1] [RX-STBC-12] [RX-STBC-123] [RX-STBC-1234] +# Indicates support for the reception of PPDUs using STBC +# 0 = Not supported (default) +# 1 = support of one spatial stream +# 2 = support of one and two spatial streams +# 3 = support of one, two and three spatial streams +# 4 = support of one, two, three and four spatial streams +# 5,6,7 = reserved +# +# SU Beamformer Capable: [SU-BEAMFORMER] +# Indicates support for operation as a single user beamformer +# 0 = Not supported (default) +# 1 = Supported +# +# SU Beamformee Capable: [SU-BEAMFORMEE] +# Indicates support for operation as a single user beamformee +# 0 = Not supported (default) +# 1 = Supported +# +# Compressed Steering Number of Beamformer Antennas Supported: [BF-ANTENNA-2] +# Beamformee's capability indicating the maximum number of beamformer +# antennas the beamformee can support when sending compressed beamforming +# feedback +# If SU beamformer capable, set to maximum value minus 1 +# else reserved (default) +# +# Number of Sounding Dimensions: [SOUNDING-DIMENSION-2] +# Beamformer's capability indicating the maximum value of the NUM_STS parameter +# in the TXVECTOR of a VHT NDP +# If SU beamformer capable, set to maximum value minus 1 +# else reserved (default) +# +# MU Beamformer Capable: [MU-BEAMFORMER] +# Indicates support for operation as an MU beamformer +# 0 = Not supported or sent by Non-AP STA (default) +# 1 = Supported +# +# MU Beamformee Capable: [MU-BEAMFORMEE] +# Indicates support for operation as an MU beamformee +# 0 = Not supported or sent by AP (default) +# 1 = Supported +# +# VHT TXOP PS: [VHT-TXOP-PS] +# Indicates whether or not the AP supports VHT TXOP Power Save Mode +# or whether or not the STA is in VHT TXOP Power Save mode +# 0 = VHT AP doesnt support VHT TXOP PS mode (OR) VHT Sta not in VHT TXOP PS +# mode +# 1 = VHT AP supports VHT TXOP PS mode (OR) VHT Sta is in VHT TXOP power save +# mode +# +# +HTC-VHT Capable: [HTC-VHT] +# Indicates whether or not the STA supports receiving a VHT variant HT Control +# field. +# 0 = Not supported (default) +# 1 = supported +# +# Maximum A-MPDU Length Exponent: [MAX-A-MPDU-LEN-EXP0]..[MAX-A-MPDU-LEN-EXP7] +# Indicates the maximum length of A-MPDU pre-EOF padding that the STA can recv +# This field is an integer in the range of 0 to 7. +# The length defined by this field is equal to +# 2 pow(13 + Maximum A-MPDU Length Exponent) -1 octets +# +# VHT Link Adaptation Capable: [VHT-LINK-ADAPT2] [VHT-LINK-ADAPT3] +# Indicates whether or not the STA supports link adaptation using VHT variant +# HT Control field +# If +HTC-VHTcapable is 1 +# 0 = (no feedback) if the STA does not provide VHT MFB (default) +# 1 = reserved +# 2 = (Unsolicited) if the STA provides only unsolicited VHT MFB +# 3 = (Both) if the STA can provide VHT MFB in response to VHT MRQ and if the +# STA provides unsolicited VHT MFB +# Reserved if +HTC-VHTcapable is 0 +# +# Rx Antenna Pattern Consistency: [RX-ANTENNA-PATTERN] +# Indicates the possibility of Rx antenna pattern change +# 0 = Rx antenna pattern might change during the lifetime of an association +# 1 = Rx antenna pattern does not change during the lifetime of an association +# +# Tx Antenna Pattern Consistency: [TX-ANTENNA-PATTERN] +# Indicates the possibility of Tx antenna pattern change +# 0 = Tx antenna pattern might change during the lifetime of an association +# 1 = Tx antenna pattern does not change during the lifetime of an association +#vht_capab=[SHORT-GI-80][HTC-VHT] +# +# Require stations to support VHT PHY (reject association if they do not) +#require_vht=1 + +# 0 = 20 or 40 MHz operating Channel width +# 1 = 80 MHz channel width +# 2 = 160 MHz channel width +# 3 = 80+80 MHz channel width +#vht_oper_chwidth=1 +# +# center freq = 5 GHz + (5 * index) +# So index 42 gives center freq 5.210 GHz +# which is channel 42 in 5G band +# +#vht_oper_centr_freq_seg0_idx=42 +# +# center freq = 5 GHz + (5 * index) +# So index 159 gives center freq 5.795 GHz +# which is channel 159 in 5G band +# +#vht_oper_centr_freq_seg1_idx=159 + +##### IEEE 802.1X-2004 related configuration ################################## + +# Require IEEE 802.1X authorization +#ieee8021x=1 + +# IEEE 802.1X/EAPOL version +# hostapd is implemented based on IEEE Std 802.1X-2004 which defines EAPOL +# version 2. However, there are many client implementations that do not handle +# the new version number correctly (they seem to drop the frames completely). +# In order to make hostapd interoperate with these clients, the version number +# can be set to the older version (1) with this configuration value. +#eapol_version=2 + +# Optional displayable message sent with EAP Request-Identity. The first \0 +# in this string will be converted to ASCII-0 (nul). This can be used to +# separate network info (comma separated list of attribute=value pairs); see, +# e.g., RFC 4284. +#eap_message=hello +#eap_message=hello\0networkid=netw,nasid=foo,portid=0,NAIRealms=example.com + +# WEP rekeying (disabled if key lengths are not set or are set to 0) +# Key lengths for default/broadcast and individual/unicast keys: +# 5 = 40-bit WEP (also known as 64-bit WEP with 40 secret bits) +# 13 = 104-bit WEP (also known as 128-bit WEP with 104 secret bits) +#wep_key_len_broadcast=5 +#wep_key_len_unicast=5 +# Rekeying period in seconds. 0 = do not rekey (i.e., set keys only once) +#wep_rekey_period=300 + +# EAPOL-Key index workaround (set bit7) for WinXP Supplicant (needed only if +# only broadcast keys are used) +eapol_key_index_workaround=0 + +# EAP reauthentication period in seconds (default: 3600 seconds; 0 = disable +# reauthentication). +#eap_reauth_period=3600 + +# Use PAE group address (01:80:c2:00:00:03) instead of individual target +# address when sending EAPOL frames with driver=wired. This is the most common +# mechanism used in wired authentication, but it also requires that the port +# is only used by one station. +#use_pae_group_addr=1 + +##### Integrated EAP server ################################################### + +# Optionally, hostapd can be configured to use an integrated EAP server +# to process EAP authentication locally without need for an external RADIUS +# server. This functionality can be used both as a local authentication server +# for IEEE 802.1X/EAPOL and as a RADIUS server for other devices. + +# Use integrated EAP server instead of external RADIUS authentication +# server. This is also needed if hostapd is configured to act as a RADIUS +# authentication server. +eap_server=0 + +# Path for EAP server user database +# If SQLite support is included, this can be set to "sqlite:/path/to/sqlite.db" +# to use SQLite database instead of a text file. +#eap_user_file=/etc/hostapd.eap_user + +# CA certificate (PEM or DER file) for EAP-TLS/PEAP/TTLS +#ca_cert=/etc/hostapd.ca.pem + +# Server certificate (PEM or DER file) for EAP-TLS/PEAP/TTLS +#server_cert=/etc/hostapd.server.pem + +# Private key matching with the server certificate for EAP-TLS/PEAP/TTLS +# This may point to the same file as server_cert if both certificate and key +# are included in a single file. PKCS#12 (PFX) file (.p12/.pfx) can also be +# used by commenting out server_cert and specifying the PFX file as the +# private_key. +#private_key=/etc/hostapd.server.prv + +# Passphrase for private key +#private_key_passwd=secret passphrase + +# Server identity +# EAP methods that provide mechanism for authenticated server identity delivery +# use this value. If not set, "hostapd" is used as a default. +#server_id=server.example.com + +# Enable CRL verification. +# Note: hostapd does not yet support CRL downloading based on CDP. Thus, a +# valid CRL signed by the CA is required to be included in the ca_cert file. +# This can be done by using PEM format for CA certificate and CRL and +# concatenating these into one file. Whenever CRL changes, hostapd needs to be +# restarted to take the new CRL into use. +# 0 = do not verify CRLs (default) +# 1 = check the CRL of the user certificate +# 2 = check all CRLs in the certificate path +#check_crl=1 + +# Cached OCSP stapling response (DER encoded) +# If set, this file is sent as a certificate status response by the EAP server +# if the EAP peer requests certificate status in the ClientHello message. +# This cache file can be updated, e.g., by running following command +# periodically to get an update from the OCSP responder: +# openssl ocsp \ +# -no_nonce \ +# -CAfile /etc/hostapd.ca.pem \ +# -issuer /etc/hostapd.ca.pem \ +# -cert /etc/hostapd.server.pem \ +# -url http://ocsp.example.com:8888/ \ +# -respout /tmp/ocsp-cache.der +#ocsp_stapling_response=/tmp/ocsp-cache.der + +# dh_file: File path to DH/DSA parameters file (in PEM format) +# This is an optional configuration file for setting parameters for an +# ephemeral DH key exchange. In most cases, the default RSA authentication does +# not use this configuration. However, it is possible setup RSA to use +# ephemeral DH key exchange. In addition, ciphers with DSA keys always use +# ephemeral DH keys. This can be used to achieve forward secrecy. If the file +# is in DSA parameters format, it will be automatically converted into DH +# params. This parameter is required if anonymous EAP-FAST is used. +# You can generate DH parameters file with OpenSSL, e.g., +# "openssl dhparam -out /etc/hostapd.dh.pem 1024" +#dh_file=/etc/hostapd.dh.pem + +# Fragment size for EAP methods +#fragment_size=1400 + +# Finite cyclic group for EAP-pwd. Number maps to group of domain parameters +# using the IANA repository for IKE (RFC 2409). +#pwd_group=19 + +# Configuration data for EAP-SIM database/authentication gateway interface. +# This is a text string in implementation specific format. The example +# implementation in eap_sim_db.c uses this as the UNIX domain socket name for +# the HLR/AuC gateway (e.g., hlr_auc_gw). In this case, the path uses "unix:" +# prefix. If hostapd is built with SQLite support (CONFIG_SQLITE=y in .config), +# database file can be described with an optional db=<path> parameter. +#eap_sim_db=unix:/tmp/hlr_auc_gw.sock +#eap_sim_db=unix:/tmp/hlr_auc_gw.sock db=/tmp/hostapd.db + +# Encryption key for EAP-FAST PAC-Opaque values. This key must be a secret, +# random value. It is configured as a 16-octet value in hex format. It can be +# generated, e.g., with the following command: +# od -tx1 -v -N16 /dev/random | colrm 1 8 | tr -d ' ' +#pac_opaque_encr_key=000102030405060708090a0b0c0d0e0f + +# EAP-FAST authority identity (A-ID) +# A-ID indicates the identity of the authority that issues PACs. The A-ID +# should be unique across all issuing servers. In theory, this is a variable +# length field, but due to some existing implementations requiring A-ID to be +# 16 octets in length, it is strongly recommended to use that length for the +# field to provid interoperability with deployed peer implementations. This +# field is configured in hex format. +#eap_fast_a_id=101112131415161718191a1b1c1d1e1f + +# EAP-FAST authority identifier information (A-ID-Info) +# This is a user-friendly name for the A-ID. For example, the enterprise name +# and server name in a human-readable format. This field is encoded as UTF-8. +#eap_fast_a_id_info=test server + +# Enable/disable different EAP-FAST provisioning modes: +#0 = provisioning disabled +#1 = only anonymous provisioning allowed +#2 = only authenticated provisioning allowed +#3 = both provisioning modes allowed (default) +#eap_fast_prov=3 + +# EAP-FAST PAC-Key lifetime in seconds (hard limit) +#pac_key_lifetime=604800 + +# EAP-FAST PAC-Key refresh time in seconds (soft limit on remaining hard +# limit). The server will generate a new PAC-Key when this number of seconds +# (or fewer) of the lifetime remains. +#pac_key_refresh_time=86400 + +# EAP-SIM and EAP-AKA protected success/failure indication using AT_RESULT_IND +# (default: 0 = disabled). +#eap_sim_aka_result_ind=1 + +# Trusted Network Connect (TNC) +# If enabled, TNC validation will be required before the peer is allowed to +# connect. Note: This is only used with EAP-TTLS and EAP-FAST. If any other +# EAP method is enabled, the peer will be allowed to connect without TNC. +#tnc=1 + + +##### IEEE 802.11f - Inter-Access Point Protocol (IAPP) ####################### + +# Interface to be used for IAPP broadcast packets +#iapp_interface=eth0 + + +##### RADIUS client configuration ############################################# +# for IEEE 802.1X with external Authentication Server, IEEE 802.11 +# authentication with external ACL for MAC addresses, and accounting + +# The own IP address of the access point (used as NAS-IP-Address) +own_ip_addr=127.0.0.1 + +# Optional NAS-Identifier string for RADIUS messages. When used, this should be +# a unique to the NAS within the scope of the RADIUS server. For example, a +# fully qualified domain name can be used here. +# When using IEEE 802.11r, nas_identifier must be set and must be between 1 and +# 48 octets long. +#nas_identifier=ap.example.com + +# RADIUS authentication server +#auth_server_addr=127.0.0.1 +#auth_server_port=1812 +#auth_server_shared_secret=secret + +# RADIUS accounting server +#acct_server_addr=127.0.0.1 +#acct_server_port=1813 +#acct_server_shared_secret=secret + +# Secondary RADIUS servers; to be used if primary one does not reply to +# RADIUS packets. These are optional and there can be more than one secondary +# server listed. +#auth_server_addr=127.0.0.2 +#auth_server_port=1812 +#auth_server_shared_secret=secret2 +# +#acct_server_addr=127.0.0.2 +#acct_server_port=1813 +#acct_server_shared_secret=secret2 + +# Retry interval for trying to return to the primary RADIUS server (in +# seconds). RADIUS client code will automatically try to use the next server +# when the current server is not replying to requests. If this interval is set, +# primary server will be retried after configured amount of time even if the +# currently used secondary server is still working. +#radius_retry_primary_interval=600 + + +# Interim accounting update interval +# If this is set (larger than 0) and acct_server is configured, hostapd will +# send interim accounting updates every N seconds. Note: if set, this overrides +# possible Acct-Interim-Interval attribute in Access-Accept message. Thus, this +# value should not be configured in hostapd.conf, if RADIUS server is used to +# control the interim interval. +# This value should not be less 600 (10 minutes) and must not be less than +# 60 (1 minute). +#radius_acct_interim_interval=600 + +# Request Chargeable-User-Identity (RFC 4372) +# This parameter can be used to configure hostapd to request CUI from the +# RADIUS server by including Chargeable-User-Identity attribute into +# Access-Request packets. +#radius_request_cui=1 + +# Dynamic VLAN mode; allow RADIUS authentication server to decide which VLAN +# is used for the stations. This information is parsed from following RADIUS +# attributes based on RFC 3580 and RFC 2868: Tunnel-Type (value 13 = VLAN), +# Tunnel-Medium-Type (value 6 = IEEE 802), Tunnel-Private-Group-ID (value +# VLANID as a string). Optionally, the local MAC ACL list (accept_mac_file) can +# be used to set static client MAC address to VLAN ID mapping. +# 0 = disabled (default) +# 1 = option; use default interface if RADIUS server does not include VLAN ID +# 2 = required; reject authentication if RADIUS server does not include VLAN ID +#dynamic_vlan=0 + +# VLAN interface list for dynamic VLAN mode is read from a separate text file. +# This list is used to map VLAN ID from the RADIUS server to a network +# interface. Each station is bound to one interface in the same way as with +# multiple BSSIDs or SSIDs. Each line in this text file is defining a new +# interface and the line must include VLAN ID and interface name separated by +# white space (space or tab). +# If no entries are provided by this file, the station is statically mapped +# to <bss-iface>.<vlan-id> interfaces. +#vlan_file=/etc/hostapd.vlan + +# Interface where 802.1q tagged packets should appear when a RADIUS server is +# used to determine which VLAN a station is on. hostapd creates a bridge for +# each VLAN. Then hostapd adds a VLAN interface (associated with the interface +# indicated by 'vlan_tagged_interface') and the appropriate wireless interface +# to the bridge. +#vlan_tagged_interface=eth0 + +# Bridge (prefix) to add the wifi and the tagged interface to. This gets the +# VLAN ID appended. It defaults to brvlan%d if no tagged interface is given +# and br%s.%d if a tagged interface is given, provided %s = tagged interface +# and %d = VLAN ID. +#vlan_bridge=brvlan + +# When hostapd creates a VLAN interface on vlan_tagged_interfaces, it needs +# to know how to name it. +# 0 = vlan<XXX>, e.g., vlan1 +# 1 = <vlan_tagged_interface>.<XXX>, e.g. eth0.1 +#vlan_naming=0 + +# Arbitrary RADIUS attributes can be added into Access-Request and +# Accounting-Request packets by specifying the contents of the attributes with +# the following configuration parameters. There can be multiple of these to +# add multiple attributes. These parameters can also be used to override some +# of the attributes added automatically by hostapd. +# Format: <attr_id>[:<syntax:value>] +# attr_id: RADIUS attribute type (e.g., 26 = Vendor-Specific) +# syntax: s = string (UTF-8), d = integer, x = octet string +# value: attribute value in format indicated by the syntax +# If syntax and value parts are omitted, a null value (single 0x00 octet) is +# used. +# +# Additional Access-Request attributes +# radius_auth_req_attr=<attr_id>[:<syntax:value>] +# Examples: +# Operator-Name = "Operator" +#radius_auth_req_attr=126:s:Operator +# Service-Type = Framed (2) +#radius_auth_req_attr=6:d:2 +# Connect-Info = "testing" (this overrides the automatically generated value) +#radius_auth_req_attr=77:s:testing +# Same Connect-Info value set as a hexdump +#radius_auth_req_attr=77:x:74657374696e67 + +# +# Additional Accounting-Request attributes +# radius_acct_req_attr=<attr_id>[:<syntax:value>] +# Examples: +# Operator-Name = "Operator" +#radius_acct_req_attr=126:s:Operator + +# Dynamic Authorization Extensions (RFC 5176) +# This mechanism can be used to allow dynamic changes to user session based on +# commands from a RADIUS server (or some other disconnect client that has the +# needed session information). For example, Disconnect message can be used to +# request an associated station to be disconnected. +# +# This is disabled by default. Set radius_das_port to non-zero UDP port +# number to enable. +#radius_das_port=3799 +# +# DAS client (the host that can send Disconnect/CoA requests) and shared secret +#radius_das_client=192.168.1.123 shared secret here +# +# DAS Event-Timestamp time window in seconds +#radius_das_time_window=300 +# +# DAS require Event-Timestamp +#radius_das_require_event_timestamp=1 + +##### RADIUS authentication server configuration ############################## + +# hostapd can be used as a RADIUS authentication server for other hosts. This +# requires that the integrated EAP server is also enabled and both +# authentication services are sharing the same configuration. + +# File name of the RADIUS clients configuration for the RADIUS server. If this +# commented out, RADIUS server is disabled. +#radius_server_clients=/etc/hostapd.radius_clients + +# The UDP port number for the RADIUS authentication server +#radius_server_auth_port=1812 + +# Use IPv6 with RADIUS server (IPv4 will also be supported using IPv6 API) +#radius_server_ipv6=1 + + +##### WPA/IEEE 802.11i configuration ########################################## + +# Enable WPA. Setting this variable configures the AP to require WPA (either +# WPA-PSK or WPA-RADIUS/EAP based on other configuration). For WPA-PSK, either +# wpa_psk or wpa_passphrase must be set and wpa_key_mgmt must include WPA-PSK. +# Instead of wpa_psk / wpa_passphrase, wpa_psk_radius might suffice. +# For WPA-RADIUS/EAP, ieee8021x must be set (but without dynamic WEP keys), +# RADIUS authentication server must be configured, and WPA-EAP must be included +# in wpa_key_mgmt. +# This field is a bit field that can be used to enable WPA (IEEE 802.11i/D3.0) +# and/or WPA2 (full IEEE 802.11i/RSN): +# bit0 = WPA +# bit1 = IEEE 802.11i/RSN (WPA2) (dot11RSNAEnabled) +wpa=2 + +# WPA pre-shared keys for WPA-PSK. This can be either entered as a 256-bit +# secret in hex format (64 hex digits), wpa_psk, or as an ASCII passphrase +# (8..63 characters) that will be converted to PSK. This conversion uses SSID +# so the PSK changes when ASCII passphrase is used and the SSID is changed. +# wpa_psk (dot11RSNAConfigPSKValue) +# wpa_passphrase (dot11RSNAConfigPSKPassPhrase) +#wpa_psk=0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef +wpa_passphrase=12345678 + +# Optionally, WPA PSKs can be read from a separate text file (containing list +# of (PSK,MAC address) pairs. This allows more than one PSK to be configured. +# Use absolute path name to make sure that the files can be read on SIGHUP +# configuration reloads. +#wpa_psk_file=/etc/hostapd.wpa_psk + +# Optionally, WPA passphrase can be received from RADIUS authentication server +# This requires macaddr_acl to be set to 2 (RADIUS) +# 0 = disabled (default) +# 1 = optional; use default passphrase/psk if RADIUS server does not include +# Tunnel-Password +# 2 = required; reject authentication if RADIUS server does not include +# Tunnel-Password +#wpa_psk_radius=0 + +# Set of accepted key management algorithms (WPA-PSK, WPA-EAP, or both). The +# entries are separated with a space. WPA-PSK-SHA256 and WPA-EAP-SHA256 can be +# added to enable SHA256-based stronger algorithms. +# (dot11RSNAConfigAuthenticationSuitesTable) +wpa_key_mgmt=WPA-PSK + +# Set of accepted cipher suites (encryption algorithms) for pairwise keys +# (unicast packets). This is a space separated list of algorithms: +# CCMP = AES in Counter mode with CBC-MAC [RFC 3610, IEEE 802.11i/D7.0] +# TKIP = Temporal Key Integrity Protocol [IEEE 802.11i/D7.0] +# Group cipher suite (encryption algorithm for broadcast and multicast frames) +# is automatically selected based on this configuration. If only CCMP is +# allowed as the pairwise cipher, group cipher will also be CCMP. Otherwise, +# TKIP will be used as the group cipher. +# (dot11RSNAConfigPairwiseCiphersTable) +# Pairwise cipher for WPA (v1) (default: TKIP) +wpa_pairwise=TKIP CCMP +# Pairwise cipher for RSN/WPA2 (default: use wpa_pairwise value) +rsn_pairwise=CCMP + +# Time interval for rekeying GTK (broadcast/multicast encryption keys) in +# seconds. (dot11RSNAConfigGroupRekeyTime) +#wpa_group_rekey=600 + +# Rekey GTK when any STA that possesses the current GTK is leaving the BSS. +# (dot11RSNAConfigGroupRekeyStrict) +#wpa_strict_rekey=1 + +# Time interval for rekeying GMK (master key used internally to generate GTKs +# (in seconds). +#wpa_gmk_rekey=86400 + +# Maximum lifetime for PTK in seconds. This can be used to enforce rekeying of +# PTK to mitigate some attacks against TKIP deficiencies. +#wpa_ptk_rekey=600 + +# Enable IEEE 802.11i/RSN/WPA2 pre-authentication. This is used to speed up +# roaming be pre-authenticating IEEE 802.1X/EAP part of the full RSN +# authentication and key handshake before actually associating with a new AP. +# (dot11RSNAPreauthenticationEnabled) +#rsn_preauth=1 +# +# Space separated list of interfaces from which pre-authentication frames are +# accepted (e.g., 'eth0' or 'eth0 wlan0wds0'. This list should include all +# interface that are used for connections to other APs. This could include +# wired interfaces and WDS links. The normal wireless data interface towards +# associated stations (e.g., wlan0) should not be added, since +# pre-authentication is only used with APs other than the currently associated +# one. +#rsn_preauth_interfaces=eth0 + +# peerkey: Whether PeerKey negotiation for direct links (IEEE 802.11e) is +# allowed. This is only used with RSN/WPA2. +# 0 = disabled (default) +# 1 = enabled +#peerkey=1 + +# ieee80211w: Whether management frame protection (MFP) is enabled +# 0 = disabled (default) +# 1 = optional +# 2 = required +#ieee80211w=0 + +# Association SA Query maximum timeout (in TU = 1.024 ms; for MFP) +# (maximum time to wait for a SA Query response) +# dot11AssociationSAQueryMaximumTimeout, 1...4294967295 +#assoc_sa_query_max_timeout=1000 + +# Association SA Query retry timeout (in TU = 1.024 ms; for MFP) +# (time between two subsequent SA Query requests) +# dot11AssociationSAQueryRetryTimeout, 1...4294967295 +#assoc_sa_query_retry_timeout=201 + +# disable_pmksa_caching: Disable PMKSA caching +# This parameter can be used to disable caching of PMKSA created through EAP +# authentication. RSN preauthentication may still end up using PMKSA caching if +# it is enabled (rsn_preauth=1). +# 0 = PMKSA caching enabled (default) +# 1 = PMKSA caching disabled +#disable_pmksa_caching=0 + +# okc: Opportunistic Key Caching (aka Proactive Key Caching) +# Allow PMK cache to be shared opportunistically among configured interfaces +# and BSSes (i.e., all configurations within a single hostapd process). +# 0 = disabled (default) +# 1 = enabled +#okc=1 + +# SAE threshold for anti-clogging mechanism (dot11RSNASAEAntiCloggingThreshold) +# This parameter defines how many open SAE instances can be in progress at the +# same time before the anti-clogging mechanism is taken into use. +#sae_anti_clogging_threshold=5 + +# Enabled SAE finite cyclic groups +# SAE implementation are required to support group 19 (ECC group defined over a +# 256-bit prime order field). All groups that are supported by the +# implementation are enabled by default. This configuration parameter can be +# used to specify a limited set of allowed groups. The group values are listed +# in the IANA registry: +# http://www.iana.org/assignments/ipsec-registry/ipsec-registry.xml#ipsec-registry-9 +#sae_groups=19 20 21 25 26 + +##### IEEE 802.11r configuration ############################################## + +# Mobility Domain identifier (dot11FTMobilityDomainID, MDID) +# MDID is used to indicate a group of APs (within an ESS, i.e., sharing the +# same SSID) between which a STA can use Fast BSS Transition. +# 2-octet identifier as a hex string. +#mobility_domain=a1b2 + +# PMK-R0 Key Holder identifier (dot11FTR0KeyHolderID) +# 1 to 48 octet identifier. +# This is configured with nas_identifier (see RADIUS client section above). + +# Default lifetime of the PMK-RO in minutes; range 1..65535 +# (dot11FTR0KeyLifetime) +#r0_key_lifetime=10000 + +# PMK-R1 Key Holder identifier (dot11FTR1KeyHolderID) +# 6-octet identifier as a hex string. +#r1_key_holder=000102030405 + +# Reassociation deadline in time units (TUs / 1.024 ms; range 1000..65535) +# (dot11FTReassociationDeadline) +#reassociation_deadline=1000 + +# List of R0KHs in the same Mobility Domain +# format: <MAC address> <NAS Identifier> <128-bit key as hex string> +# This list is used to map R0KH-ID (NAS Identifier) to a destination MAC +# address when requesting PMK-R1 key from the R0KH that the STA used during the +# Initial Mobility Domain Association. +#r0kh=02:01:02:03:04:05 r0kh-1.example.com 000102030405060708090a0b0c0d0e0f +#r0kh=02:01:02:03:04:06 r0kh-2.example.com 00112233445566778899aabbccddeeff +# And so on.. One line per R0KH. + +# List of R1KHs in the same Mobility Domain +# format: <MAC address> <R1KH-ID> <128-bit key as hex string> +# This list is used to map R1KH-ID to a destination MAC address when sending +# PMK-R1 key from the R0KH. This is also the list of authorized R1KHs in the MD +# that can request PMK-R1 keys. +#r1kh=02:01:02:03:04:05 02:11:22:33:44:55 000102030405060708090a0b0c0d0e0f +#r1kh=02:01:02:03:04:06 02:11:22:33:44:66 00112233445566778899aabbccddeeff +# And so on.. One line per R1KH. + +# Whether PMK-R1 push is enabled at R0KH +# 0 = do not push PMK-R1 to all configured R1KHs (default) +# 1 = push PMK-R1 to all configured R1KHs whenever a new PMK-R0 is derived +#pmk_r1_push=1 + +##### Neighbor table ########################################################## +# Maximum number of entries kept in AP table (either for neigbor table or for +# detecting Overlapping Legacy BSS Condition). The oldest entry will be +# removed when adding a new entry that would make the list grow over this +# limit. Note! WFA certification for IEEE 802.11g requires that OLBC is +# enabled, so this field should not be set to 0 when using IEEE 802.11g. +# default: 255 +#ap_table_max_size=255 + +# Number of seconds of no frames received after which entries may be deleted +# from the AP table. Since passive scanning is not usually performed frequently +# this should not be set to very small value. In addition, there is no +# guarantee that every scan cycle will receive beacon frames from the +# neighboring APs. +# default: 60 +#ap_table_expiration_time=3600 + + +##### Wi-Fi Protected Setup (WPS) ############################################# + +# WPS state +# 0 = WPS disabled (default) +# 1 = WPS enabled, not configured +# 2 = WPS enabled, configured +#wps_state=2 + +# Whether to manage this interface independently from other WPS interfaces +# By default, a single hostapd process applies WPS operations to all configured +# interfaces. This parameter can be used to disable that behavior for a subset +# of interfaces. If this is set to non-zero for an interface, WPS commands +# issued on that interface do not apply to other interfaces and WPS operations +# performed on other interfaces do not affect this interface. +#wps_independent=0 + +# AP can be configured into a locked state where new WPS Registrar are not +# accepted, but previously authorized Registrars (including the internal one) +# can continue to add new Enrollees. +#ap_setup_locked=1 + +# Universally Unique IDentifier (UUID; see RFC 4122) of the device +# This value is used as the UUID for the internal WPS Registrar. If the AP +# is also using UPnP, this value should be set to the device's UPnP UUID. +# If not configured, UUID will be generated based on the local MAC address. +#uuid=12345678-9abc-def0-1234-56789abcdef0 + +# Note: If wpa_psk_file is set, WPS is used to generate random, per-device PSKs +# that will be appended to the wpa_psk_file. If wpa_psk_file is not set, the +# default PSK (wpa_psk/wpa_passphrase) will be delivered to Enrollees. Use of +# per-device PSKs is recommended as the more secure option (i.e., make sure to +# set wpa_psk_file when using WPS with WPA-PSK). + +# When an Enrollee requests access to the network with PIN method, the Enrollee +# PIN will need to be entered for the Registrar. PIN request notifications are +# sent to hostapd ctrl_iface monitor. In addition, they can be written to a +# text file that could be used, e.g., to populate the AP administration UI with +# pending PIN requests. If the following variable is set, the PIN requests will +# be written to the configured file. +#wps_pin_requests=/var/run/hostapd_wps_pin_requests + +# Device Name +# User-friendly description of device; up to 32 octets encoded in UTF-8 +#device_name=Wireless AP + +# Manufacturer +# The manufacturer of the device (up to 64 ASCII characters) +#manufacturer=Company + +# Model Name +# Model of the device (up to 32 ASCII characters) +#model_name=WAP + +# Model Number +# Additional device description (up to 32 ASCII characters) +#model_number=123 + +# Serial Number +# Serial number of the device (up to 32 characters) +#serial_number=12345 + +# Primary Device Type +# Used format: <categ>-<OUI>-<subcateg> +# categ = Category as an integer value +# OUI = OUI and type octet as a 4-octet hex-encoded value; 0050F204 for +# default WPS OUI +# subcateg = OUI-specific Sub Category as an integer value +# Examples: +# 1-0050F204-1 (Computer / PC) +# 1-0050F204-2 (Computer / Server) +# 5-0050F204-1 (Storage / NAS) +# 6-0050F204-1 (Network Infrastructure / AP) +#device_type=6-0050F204-1 + +# OS Version +# 4-octet operating system version number (hex string) +#os_version=01020300 + +# Config Methods +# List of the supported configuration methods +# Available methods: usba ethernet label display ext_nfc_token int_nfc_token +# nfc_interface push_button keypad virtual_display physical_display +# virtual_push_button physical_push_button +#config_methods=label virtual_display virtual_push_button keypad + +# WPS capability discovery workaround for PBC with Windows 7 +# Windows 7 uses incorrect way of figuring out AP's WPS capabilities by acting +# as a Registrar and using M1 from the AP. The config methods attribute in that +# message is supposed to indicate only the configuration method supported by +# the AP in Enrollee role, i.e., to add an external Registrar. For that case, +# PBC shall not be used and as such, the PushButton config method is removed +# from M1 by default. If pbc_in_m1=1 is included in the configuration file, +# the PushButton config method is left in M1 (if included in config_methods +# parameter) to allow Windows 7 to use PBC instead of PIN (e.g., from a label +# in the AP). +#pbc_in_m1=1 + +# Static access point PIN for initial configuration and adding Registrars +# If not set, hostapd will not allow external WPS Registrars to control the +# access point. The AP PIN can also be set at runtime with hostapd_cli +# wps_ap_pin command. Use of temporary (enabled by user action) and random +# AP PIN is much more secure than configuring a static AP PIN here. As such, +# use of the ap_pin parameter is not recommended if the AP device has means for +# displaying a random PIN. +#ap_pin=12345670 + +# Skip building of automatic WPS credential +# This can be used to allow the automatically generated Credential attribute to +# be replaced with pre-configured Credential(s). +#skip_cred_build=1 + +# Additional Credential attribute(s) +# This option can be used to add pre-configured Credential attributes into M8 +# message when acting as a Registrar. If skip_cred_build=1, this data will also +# be able to override the Credential attribute that would have otherwise been +# automatically generated based on network configuration. This configuration +# option points to an external file that much contain the WPS Credential +# attribute(s) as binary data. +#extra_cred=hostapd.cred + +# Credential processing +# 0 = process received credentials internally (default) +# 1 = do not process received credentials; just pass them over ctrl_iface to +# external program(s) +# 2 = process received credentials internally and pass them over ctrl_iface +# to external program(s) +# Note: With wps_cred_processing=1, skip_cred_build should be set to 1 and +# extra_cred be used to provide the Credential data for Enrollees. +# +# wps_cred_processing=1 will disabled automatic updates of hostapd.conf file +# both for Credential processing and for marking AP Setup Locked based on +# validation failures of AP PIN. An external program is responsible on updating +# the configuration appropriately in this case. +#wps_cred_processing=0 + +# AP Settings Attributes for M7 +# By default, hostapd generates the AP Settings Attributes for M7 based on the +# current configuration. It is possible to override this by providing a file +# with pre-configured attributes. This is similar to extra_cred file format, +# but the AP Settings attributes are not encapsulated in a Credential +# attribute. +#ap_settings=hostapd.ap_settings + +# WPS UPnP interface +# If set, support for external Registrars is enabled. +#upnp_iface=br0 + +# Friendly Name (required for UPnP) +# Short description for end use. Should be less than 64 characters. +#friendly_name=WPS Access Point + +# Manufacturer URL (optional for UPnP) +#manufacturer_url=http://www.example.com/ + +# Model Description (recommended for UPnP) +# Long description for end user. Should be less than 128 characters. +#model_description=Wireless Access Point + +# Model URL (optional for UPnP) +#model_url=http://www.example.com/model/ + +# Universal Product Code (optional for UPnP) +# 12-digit, all-numeric code that identifies the consumer package. +#upc=123456789012 + +# WPS RF Bands (a = 5G, b = 2.4G, g = 2.4G, ag = dual band) +# This value should be set according to RF band(s) supported by the AP if +# hw_mode is not set. For dual band dual concurrent devices, this needs to be +# set to ag to allow both RF bands to be advertized. +#wps_rf_bands=ag + +# NFC password token for WPS +# These parameters can be used to configure a fixed NFC password token for the +# AP. This can be generated, e.g., with nfc_pw_token from wpa_supplicant. When +# these parameters are used, the AP is assumed to be deployed with a NFC tag +# that includes the matching NFC password token (e.g., written based on the +# NDEF record from nfc_pw_token). +# +#wps_nfc_dev_pw_id: Device Password ID (16..65535) +#wps_nfc_dh_pubkey: Hexdump of DH Public Key +#wps_nfc_dh_privkey: Hexdump of DH Private Key +#wps_nfc_dev_pw: Hexdump of Device Password + +##### Wi-Fi Direct (P2P) ###################################################### + +# Enable P2P Device management +#manage_p2p=1 + +# Allow cross connection +#allow_cross_connection=1 + +#### TDLS (IEEE 802.11z-2010) ################################################# + +# Prohibit use of TDLS in this BSS +#tdls_prohibit=1 + +# Prohibit use of TDLS Channel Switching in this BSS +#tdls_prohibit_chan_switch=1 + +##### IEEE 802.11v-2011 ####################################################### + +# Time advertisement +# 0 = disabled (default) +# 2 = UTC time at which the TSF timer is 0 +#time_advertisement=2 + +# Local time zone as specified in 8.3 of IEEE Std 1003.1-2004: +# stdoffset[dst[offset][,start[/time],end[/time]]] +#time_zone=EST5 + +# WNM-Sleep Mode (extended sleep mode for stations) +# 0 = disabled (default) +# 1 = enabled (allow stations to use WNM-Sleep Mode) +#wnm_sleep_mode=1 + +# BSS Transition Management +# 0 = disabled (default) +# 1 = enabled +#bss_transition=1 + +##### IEEE 802.11u-2011 ####################################################### + +# Enable Interworking service +#interworking=1 + +# Access Network Type +# 0 = Private network +# 1 = Private network with guest access +# 2 = Chargeable public network +# 3 = Free public network +# 4 = Personal device network +# 5 = Emergency services only network +# 14 = Test or experimental +# 15 = Wildcard +#access_network_type=0 + +# Whether the network provides connectivity to the Internet +# 0 = Unspecified +# 1 = Network provides connectivity to the Internet +#internet=1 + +# Additional Step Required for Access +# Note: This is only used with open network, i.e., ASRA shall ne set to 0 if +# RSN is used. +#asra=0 + +# Emergency services reachable +#esr=0 + +# Unauthenticated emergency service accessible +#uesa=0 + +# Venue Info (optional) +# The available values are defined in IEEE Std 802.11u-2011, 7.3.1.34. +# Example values (group,type): +# 0,0 = Unspecified +# 1,7 = Convention Center +# 1,13 = Coffee Shop +# 2,0 = Unspecified Business +# 7,1 Private Residence +#venue_group=7 +#venue_type=1 + +# Homogeneous ESS identifier (optional; dot11HESSID) +# If set, this shall be identifical to one of the BSSIDs in the homogeneous +# ESS and this shall be set to the same value across all BSSs in homogeneous +# ESS. +#hessid=02:03:04:05:06:07 + +# Roaming Consortium List +# Arbitrary number of Roaming Consortium OIs can be configured with each line +# adding a new OI to the list. The first three entries are available through +# Beacon and Probe Response frames. Any additional entry will be available only +# through ANQP queries. Each OI is between 3 and 15 octets and is configured as +# a hexstring. +#roaming_consortium=021122 +#roaming_consortium=2233445566 + +# Venue Name information +# This parameter can be used to configure one or more Venue Name Duples for +# Venue Name ANQP information. Each entry has a two or three character language +# code (ISO-639) separated by colon from the venue name string. +# Note that venue_group and venue_type have to be set for Venue Name +# information to be complete. +#venue_name=eng:Example venue +#venue_name=fin:Esimerkkipaikka +# Alternative format for language:value strings: +# (double quoted string, printf-escaped string) +#venue_name=P"eng:Example\nvenue" + +# Network Authentication Type +# This parameter indicates what type of network authentication is used in the +# network. +# format: <network auth type indicator (1-octet hex str)> [redirect URL] +# Network Authentication Type Indicator values: +# 00 = Acceptance of terms and conditions +# 01 = On-line enrollment supported +# 02 = http/https redirection +# 03 = DNS redirection +#network_auth_type=00 +#network_auth_type=02http://www.example.com/redirect/me/here/ + +# IP Address Type Availability +# format: <1-octet encoded value as hex str> +# (ipv4_type & 0x3f) << 2 | (ipv6_type & 0x3) +# ipv4_type: +# 0 = Address type not available +# 1 = Public IPv4 address available +# 2 = Port-restricted IPv4 address available +# 3 = Single NATed private IPv4 address available +# 4 = Double NATed private IPv4 address available +# 5 = Port-restricted IPv4 address and single NATed IPv4 address available +# 6 = Port-restricted IPv4 address and double NATed IPv4 address available +# 7 = Availability of the address type is not known +# ipv6_type: +# 0 = Address type not available +# 1 = Address type available +# 2 = Availability of the address type not known +#ipaddr_type_availability=14 + +# Domain Name +# format: <variable-octet str>[,<variable-octet str>] +#domain_name=example.com,another.example.com,yet-another.example.com + +# 3GPP Cellular Network information +# format: <MCC1,MNC1>[;<MCC2,MNC2>][;...] +#anqp_3gpp_cell_net=244,91;310,026;234,56 + +# NAI Realm information +# One or more realm can be advertised. Each nai_realm line adds a new realm to +# the set. These parameters provide information for stations using Interworking +# network selection to allow automatic connection to a network based on +# credentials. +# format: <encoding>,<NAI Realm(s)>[,<EAP Method 1>][,<EAP Method 2>][,...] +# encoding: +# 0 = Realm formatted in accordance with IETF RFC 4282 +# 1 = UTF-8 formatted character string that is not formatted in +# accordance with IETF RFC 4282 +# NAI Realm(s): Semi-colon delimited NAI Realm(s) +# EAP Method: <EAP Method>[:<[AuthParam1:Val1]>][<[AuthParam2:Val2]>][...] +# AuthParam (Table 8-188 in IEEE Std 802.11-2012): +# ID 2 = Non-EAP Inner Authentication Type +# 1 = PAP, 2 = CHAP, 3 = MSCHAP, 4 = MSCHAPV2 +# ID 3 = Inner authentication EAP Method Type +# ID 5 = Credential Type +# 1 = SIM, 2 = USIM, 3 = NFC Secure Element, 4 = Hardware Token, +# 5 = Softoken, 6 = Certificate, 7 = username/password, 9 = Anonymous, +# 10 = Vendor Specific +#nai_realm=0,example.com;example.net +# EAP methods EAP-TLS with certificate and EAP-TTLS/MSCHAPv2 with +# username/password +#nai_realm=0,example.org,13[5:6],21[2:4][5:7] + +# QoS Map Set configuration +# +# Comma delimited QoS Map Set in decimal values +# (see IEEE Std 802.11-2012, 8.4.2.97) +# +# format: +# [<DSCP Exceptions[DSCP,UP]>,]<UP 0 range[low,high]>,...<UP 7 range[low,high]> +# +# There can be up to 21 optional DSCP Exceptions which are pairs of DSCP Value +# (0..63 or 255) and User Priority (0..7). This is followed by eight DSCP Range +# descriptions with DSCP Low Value and DSCP High Value pairs (0..63 or 255) for +# each UP starting from 0. If both low and high value are set to 255, the +# corresponding UP is not used. +# +# default: not set +#qos_map_set=53,2,22,6,8,15,0,7,255,255,16,31,32,39,255,255,40,47,255,255 + +##### Hotspot 2.0 ############################################################# + +# Enable Hotspot 2.0 support +#hs20=1 + +# Disable Downstream Group-Addressed Forwarding (DGAF) +# This can be used to configure a network where no group-addressed frames are +# allowed. The AP will not forward any group-address frames to the stations and +# random GTKs are issued for each station to prevent associated stations from +# forging such frames to other stations in the BSS. +#disable_dgaf=1 + +# Operator Friendly Name +# This parameter can be used to configure one or more Operator Friendly Name +# Duples. Each entry has a two or three character language code (ISO-639) +# separated by colon from the operator friendly name string. +#hs20_oper_friendly_name=eng:Example operator +#hs20_oper_friendly_name=fin:Esimerkkioperaattori + +# Connection Capability +# This can be used to advertise what type of IP traffic can be sent through the +# hotspot (e.g., due to firewall allowing/blocking protocols/ports). +# format: <IP Protocol>:<Port Number>:<Status> +# IP Protocol: 1 = ICMP, 6 = TCP, 17 = UDP +# Port Number: 0..65535 +# Status: 0 = Closed, 1 = Open, 2 = Unknown +# Each hs20_conn_capab line is added to the list of advertised tuples. +#hs20_conn_capab=1:0:2 +#hs20_conn_capab=6:22:1 +#hs20_conn_capab=17:5060:0 + +# WAN Metrics +# format: <WAN Info>:<DL Speed>:<UL Speed>:<DL Load>:<UL Load>:<LMD> +# WAN Info: B0-B1: Link Status, B2: Symmetric Link, B3: At Capabity +# (encoded as two hex digits) +# Link Status: 1 = Link up, 2 = Link down, 3 = Link in test state +# Downlink Speed: Estimate of WAN backhaul link current downlink speed in kbps; +# 1..4294967295; 0 = unknown +# Uplink Speed: Estimate of WAN backhaul link current uplink speed in kbps +# 1..4294967295; 0 = unknown +# Downlink Load: Current load of downlink WAN connection (scaled to 255 = 100%) +# Uplink Load: Current load of uplink WAN connection (scaled to 255 = 100%) +# Load Measurement Duration: Duration for measuring downlink/uplink load in +# tenths of a second (1..65535); 0 if load cannot be determined +#hs20_wan_metrics=01:8000:1000:80:240:3000 + +# Operating Class Indication +# List of operating classes the BSSes in this ESS use. The Global operating +# classes in Table E-4 of IEEE Std 802.11-2012 Annex E define the values that +# can be used in this. +# format: hexdump of operating class octets +# for example, operating classes 81 (2.4 GHz channels 1-13) and 115 (5 GHz +# channels 36-48): +#hs20_operating_class=5173 + +##### TESTING OPTIONS ######################################################### +# +# The options in this section are only available when the build configuration +# option CONFIG_TESTING_OPTIONS is set while compiling hostapd. They allow +# testing some scenarios that are otherwise difficult to reproduce. +# +# Ignore probe requests sent to hostapd with the given probability, must be a +# floating point number in the range [0, 1). +#ignore_probe_probability=0.0 +# +# Ignore authentication frames with the given probability +#ignore_auth_probability=0.0 +# +# Ignore association requests with the given probability +#ignore_assoc_probability=0.0 +# +# Ignore reassociation requests with the given probability +#ignore_reassoc_probability=0.0 +# +# Corrupt Key MIC in GTK rekey EAPOL-Key frames with the given probability +#corrupt_gtk_rekey_mic_probability=0.0 + +##### Multiple BSSID support ################################################## +# +# Above configuration is using the default interface (wlan#, or multi-SSID VLAN +# interfaces). Other BSSIDs can be added by using separator 'bss' with +# default interface name to be allocated for the data packets of the new BSS. +# +# hostapd will generate BSSID mask based on the BSSIDs that are +# configured. hostapd will verify that dev_addr & MASK == dev_addr. If this is +# not the case, the MAC address of the radio must be changed before starting +# hostapd (ifconfig wlan0 hw ether <MAC addr>). If a BSSID is configured for +# every secondary BSS, this limitation is not applied at hostapd and other +# masks may be used if the driver supports them (e.g., swap the locally +# administered bit) +# +# BSSIDs are assigned in order to each BSS, unless an explicit BSSID is +# specified using the 'bssid' parameter. +# If an explicit BSSID is specified, it must be chosen such that it: +# - results in a valid MASK that covers it and the dev_addr +# - is not the same as the MAC address of the radio +# - is not the same as any other explicitly specified BSSID +# +# Please note that hostapd uses some of the values configured for the first BSS +# as the defaults for the following BSSes. However, it is recommended that all +# BSSes include explicit configuration of all relevant configuration items. +# +#bss=wlan0_0 +#ssid=test2 +# most of the above items can be used here (apart from radio interface specific +# items, like channel) + +#bss=wlan0_1 +#bssid=00:13:10:95:fe:0b +# ... diff --git a/meta-edison-distro/recipes-connectivity/hostapd/files/hostapd.service b/meta-edison-distro/recipes-connectivity/hostapd/files/hostapd.service new file mode 100644 index 0000000..df99402 --- /dev/null +++ b/meta-edison-distro/recipes-connectivity/hostapd/files/hostapd.service @@ -0,0 +1,23 @@ +[Unit] +Description=Hostap daemon service +Requires=sys-subsystem-net-devices-wlan0.device udhcpd-for-hostapd.service +After=sys-subsystem-net-devices-wlan0.device +Before=udhcpd-for-hostapd.service + +[Service] +Type=simple + +# reload the driver for softap mode +ExecStartPre=/sbin/modprobe -r bcm4334x +ExecStartPre=/sbin/modprobe bcm4334x op_mode=2 + +# start the service hostapd +ExecStart=/usr/sbin/hostapd /etc/hostapd/hostapd.conf + +# reload the driver for sta/p2p mode +ExecStopPost=/sbin/modprobe -r bcm4334x +ExecStopPost=/sbin/modprobe bcm4334x + +[Install] +WantedBy=multi-user.target + diff --git a/meta-edison-distro/recipes-connectivity/hostapd/files/udhcpd-for-hostapd.conf b/meta-edison-distro/recipes-connectivity/hostapd/files/udhcpd-for-hostapd.conf new file mode 100644 index 0000000..1015e39 --- /dev/null +++ b/meta-edison-distro/recipes-connectivity/hostapd/files/udhcpd-for-hostapd.conf @@ -0,0 +1,107 @@ +# Sample udhcpd configuration file (/etc/udhcpd.conf) + +# The start and end of the IP lease block + +start 192.168.42.20 #default: 192.168.0.20 +end 192.168.42.254 #default: 192.168.0.254 + + +# The interface that udhcpd will use + +interface wlan0 #default: eth0 + + +# The maximim number of leases (includes addressesd reserved +# by OFFER's, DECLINE's, and ARP conficts + +#max_leases 254 #default: 254 + + +# If remaining is true (default), udhcpd will store the time +# remaining for each lease in the udhcpd leases file. This is +# for embedded systems that cannot keep time between reboots. +# If you set remaining to no, the absolute time that the lease +# expires at will be stored in the dhcpd.leases file. + +remaining yes #default: yes + + +# The time period at which udhcpd will write out a dhcpd.leases +# file. If this is 0, udhcpd will never automatically write a +# lease file. (specified in seconds) + +#auto_time 7200 #default: 7200 (2 hours) + + +# The amount of time that an IP will be reserved (leased) for if a +# DHCP decline message is received (seconds). + +#decline_time 3600 #default: 3600 (1 hour) + + +# The amount of time that an IP will be reserved (leased) for if an +# ARP conflct occurs. (seconds + +#conflict_time 3600 #default: 3600 (1 hour) + + +# How long an offered address is reserved (leased) in seconds + +#offer_time 60 #default: 60 (1 minute) + +# If a lease to be given is below this value, the full lease time is +# instead used (seconds). + +#min_lease 60 #defult: 60 + + +# The location of the leases file + +#lease_file /var/lib/misc/udhcpd.leases #defualt: /var/lib/misc/udhcpd.leases + +# The location of the pid file +pidfile /var/run/udhcpd-wlan0.pid #default: /var/run/udhcpd.pid + +# Every time udhcpd writes a leases file, the below script will be called. +# Useful for writing the lease file to flash every few hours. + +#notify_file #default: (no script) + +#notify_file dumpleases # <--- useful for debugging + +# The following are bootp specific options, setable by udhcpd. + +#siaddr 192.168.0.22 #default: 0.0.0.0 + +#sname zorak #default: (none) + +#boot_file /var/nfs_root #default: (none) + +# The remainer of options are DHCP options and can be specifed with the +# keyword 'opt' or 'option'. If an option can take multiple items, such +# as the dns option, they can be listed on the same line, or multiple +# lines. The only option with a default is 'lease'. + +# Currently supported options, for more info, see options.c +opt subnet 255.255.255.0 +#opt timezone +#opt router +#opt timesvr +#opt namesvr +#opt dns +#opt logsvr +#opt cookiesvr +#opt lprsvr +#opt bootsize +#opt domain +#opt swapsvr +#opt rootpath +#opt ipttl +#opt mtu +#opt broadcast +#opt wins +#opt lease +#opt ntpsrv +#opt tftp +#opt bootfile + diff --git a/meta-edison-distro/recipes-connectivity/hostapd/files/udhcpd-for-hostapd.service b/meta-edison-distro/recipes-connectivity/hostapd/files/udhcpd-for-hostapd.service new file mode 100644 index 0000000..b7ca3ba --- /dev/null +++ b/meta-edison-distro/recipes-connectivity/hostapd/files/udhcpd-for-hostapd.service @@ -0,0 +1,15 @@ +[Unit] +Description=udhcpd daemon for hostapd +Requires=hostapd.service +After=hostapd.service +StopWhenUnneeded=true + +[Service] +Type=simple +ExecStartPre=/sbin/ifconfig wlan0 192.168.42.1 up +ExecStart=/usr/sbin/udhcpd -f -S /etc/hostapd/udhcpd-for-hostapd.conf +Restart=on-failure +RestartSec=1 + +[Install] +WantedBy=multi-user.target diff --git a/meta-edison-distro/recipes-connectivity/hostapd/hostapd-daemon_2.1.bb b/meta-edison-distro/recipes-connectivity/hostapd/hostapd-daemon_2.1.bb new file mode 100644 index 0000000..2e348f6 --- /dev/null +++ b/meta-edison-distro/recipes-connectivity/hostapd/hostapd-daemon_2.1.bb @@ -0,0 +1,51 @@ +HOMEPAGE = "http://hostap.epitest.fi" +SECTION = "kernel/userland" +LICENSE = "GPLv2 | BSD" +LIC_FILES_CHKSUM = "file://README;md5=0854a4da34ac3990770794d771fac7fd" +DEPENDS = "libnl openssl" +SUMMARY = "User space daemon for extended IEEE 802.11 management" + +inherit systemd + +SYSTEMD_SERVICE_${PN} = "hostapd.service udhcpd-for-hostapd.service" +SYSTEMD_AUTO_ENABLE = "disable" + +SRC_URI = " \ + http://hostap.epitest.fi/releases/hostapd-${PV}.tar.gz \ + file://defconfig \ + file://hostapd.service \ + file://udhcpd-for-hostapd.service \ + file://hostapd.conf-sane \ + file://udhcpd-for-hostapd.conf \ +" + +S = "${WORKDIR}/hostapd-${PV}/hostapd" + +do_configure() { + install -m 0644 ${WORKDIR}/defconfig ${S}/.config + echo "CFLAGS +=\"-I${STAGING_INCDIR}/libnl3\"" >> ${S}/.config +} + +do_compile() { + make +} + +do_install() { + install -d ${D}${sbindir} + install -m 0755 ${S}/hostapd ${D}${sbindir} + install -m 0755 ${S}/hostapd_cli ${D}${sbindir} + + install -d ${D}${sysconfdir}/hostapd + install -m 0644 ${WORKDIR}/hostapd.conf-sane ${D}${sysconfdir}/hostapd/hostapd.conf + install -m 0644 ${WORKDIR}/udhcpd-for-hostapd.conf ${D}${sysconfdir}/hostapd + + if ${@base_contains('DISTRO_FEATURES','systemd','true','false',d)}; then + # Install hostapd service + install -d ${D}/${systemd_unitdir}/system + install -m 644 ${WORKDIR}/hostapd.service ${D}${systemd_unitdir}/system + install -m 644 ${WORKDIR}/udhcpd-for-hostapd.service ${D}${systemd_unitdir}/system + fi +} + +SRC_URI[md5sum] = "bb9c50e87c5af6f89f387e63911effac" +SRC_URI[sha256sum] = "5c7110f55b6092e5277e26edc961eda2def12b94218129d116f5681e34bb2f88" diff --git a/meta-edison-distro/recipes-connectivity/libpcap/libpcap_1.5.3.bbappend b/meta-edison-distro/recipes-connectivity/libpcap/libpcap_1.5.3.bbappend new file mode 100644 index 0000000..b3c0900 --- /dev/null +++ b/meta-edison-distro/recipes-connectivity/libpcap/libpcap_1.5.3.bbappend @@ -0,0 +1,2 @@ +PROVIDES = "libpcap" +PACKAGECONFIG[bluetooth] = "--enable-bluetooth,--disable-bluetooth,bluez5" diff --git a/meta-edison-distro/recipes-connectivity/ofono/ofono_1.14.bbappend b/meta-edison-distro/recipes-connectivity/ofono/ofono_1.14.bbappend new file mode 100644 index 0000000..6fd9ffe --- /dev/null +++ b/meta-edison-distro/recipes-connectivity/ofono/ofono_1.14.bbappend @@ -0,0 +1 @@ +DEPENDS = "dbus glib-2.0 udev mobile-broadband-provider-info ${@base_contains('DISTRO_FEATURES', 'bluetooth','bluez5', '', d)}" diff --git a/meta-edison-distro/recipes-connectivity/openssh/openssh/sshd.socket b/meta-edison-distro/recipes-connectivity/openssh/openssh/sshd.socket new file mode 100644 index 0000000..2a1b012 --- /dev/null +++ b/meta-edison-distro/recipes-connectivity/openssh/openssh/sshd.socket @@ -0,0 +1,13 @@ +[Unit] +Conflicts=sshd.service + +[Socket] +ExecStartPre=/bin/mkdir -p /var/run/sshd +ListenStream=22 +# restrict access to wired access for security reasons +# comment this line to remove restriction +BindToDevice=usb0 +Accept=yes + +[Install] +WantedBy=sockets.target diff --git a/meta-edison-distro/recipes-connectivity/openssh/openssh/sshdgenkeys.service b/meta-edison-distro/recipes-connectivity/openssh/openssh/sshdgenkeys.service new file mode 100644 index 0000000..e8133e4 --- /dev/null +++ b/meta-edison-distro/recipes-connectivity/openssh/openssh/sshdgenkeys.service @@ -0,0 +1,7 @@ +[Unit] +Description=OpenSSH Key Generation + +[Service] +ExecStart=@BASE_BINDIR@/sh -c "if ! sshd -t &> /dev/null ; then rm /etc/ssh/*_key* ; ssh-keygen -A ; sync ; fi" +Type=oneshot +RemainAfterExit=yes diff --git a/meta-edison-distro/recipes-connectivity/openssh/openssh_%.bbappend b/meta-edison-distro/recipes-connectivity/openssh/openssh_%.bbappend new file mode 100644 index 0000000..1e72f89 --- /dev/null +++ b/meta-edison-distro/recipes-connectivity/openssh/openssh_%.bbappend @@ -0,0 +1 @@ +FILESEXTRAPATHS_prepend := "${THISDIR}/openssh" diff --git a/meta-edison-distro/recipes-connectivity/openssl/cryptodev-linux_1.6.bb b/meta-edison-distro/recipes-connectivity/openssl/cryptodev-linux_1.6.bb new file mode 100644 index 0000000..320716d --- /dev/null +++ b/meta-edison-distro/recipes-connectivity/openssl/cryptodev-linux_1.6.bb @@ -0,0 +1,22 @@ +SUMMARY = "A /dev/crypto device driver" +HOMEPAGE = "http://cryptodev-linux.org/" + +LICENSE = "GPLv2" +LIC_FILES_CHKSUM = "file://COPYING;md5=b234ee4d69f5fce4486a80fdaf4a4263" + +SRC_URI = "http://download.gna.org/cryptodev-linux/${BPN}-${PV}.tar.gz" + +SRC_URI[md5sum] = "eade38998313c25fd7934719cdf8a2ea" +SRC_URI[sha256sum] = "75f1425c8ea1f8cae523905a5a046a35092327a6152800b0b86efc4e56fb3e2f" + +do_compile() { + : +} + +# Just install cryptodev.h which is the only header file needed to be exported +do_install() { + install -D ${S}/crypto/cryptodev.h ${D}${includedir}/crypto/cryptodev.h +} + +ALLOW_EMPTY_${PN} = "1" +BBCLASSEXTEND = "native nativesdk" diff --git a/meta-edison-distro/recipes-connectivity/openssl/openssl.inc b/meta-edison-distro/recipes-connectivity/openssl/openssl.inc new file mode 100644 index 0000000..ee02fb7 --- /dev/null +++ b/meta-edison-distro/recipes-connectivity/openssl/openssl.inc @@ -0,0 +1,173 @@ +SUMMARY = "Secure Socket Layer" +DESCRIPTION = "Secure Socket Layer (SSL) binary and related cryptographic tools." +HOMEPAGE = "http://www.openssl.org/" +BUGTRACKER = "http://www.openssl.org/news/vulnerabilities.html" +SECTION = "libs/network" + +# "openssl | SSLeay" dual license +LICENSE = "openssl" +LIC_FILES_CHKSUM = "file://LICENSE;md5=f9a8f968107345e0b75aa8c2ecaa7ec8" + +DEPENDS = "perl-native-runtime" + +SRC_URI = "http://www.openssl.org/source/openssl-${PV}.tar.gz \ + " +S = "${WORKDIR}/openssl-${PV}" + +PACKAGECONFIG[perl] = ",,," + +AR_append = " r" +# Avoid binaries being marked as requiring an executable stack since it +# doesn't(which causes and this causes issues with SELinux +CFLAG = "${@base_conditional('SITEINFO_ENDIANNESS', 'le', '-DL_ENDIAN', '-DB_ENDIAN', d)} \ + -DTERMIO ${CFLAGS} -Wall -Wa,--noexecstack" + +# -02 does not work on mipsel: ssh hangs when it tries to read /dev/urandom +CFLAG_mtx-1 := "${@'${CFLAG}'.replace('-O2', '')}" +CFLAG_mtx-2 := "${@'${CFLAG}'.replace('-O2', '')}" + +export DIRS = "crypto ssl apps" +export EX_LIBS = "-lgcc -ldl" +export AS = "${CC} -c" + +inherit pkgconfig siteinfo multilib_header + +PACKAGES =+ "libcrypto libssl ${PN}-misc openssl-conf" +FILES_libcrypto = "${base_libdir}/libcrypto${SOLIBS}" +FILES_libssl = "${libdir}/libssl.so.*" +FILES_${PN} =+ " ${libdir}/ssl/*" +FILES_${PN}-misc = "${libdir}/ssl/misc ${bindir}/c_rehash" +RDEPENDS_${PN}-misc = "${@base_contains('PACKAGECONFIG', 'perl', 'perl', '', d)}" +FILES_${PN}-dev += "${base_libdir}/libcrypto${SOLIBSDEV}" + +# Add the openssl.cnf file to the openssl-conf package. Make the libcrypto +# package RRECOMMENDS on this package. This will enable the configuration +# file to be installed for both the base openssl package and the libcrypto +# package since the base openssl package depends on the libcrypto package. +FILES_openssl-conf = "${libdir}/ssl/openssl.cnf" +CONFFILES_openssl-conf = "${libdir}/ssl/openssl.cnf" +RRECOMMENDS_libcrypto += "openssl-conf" + +do_configure_prepend_darwin () { + sed -i -e '/version-script=openssl\.ld/d' Configure +} + +do_configure () { + cd util + perl perlpath.pl ${STAGING_BINDIR_NATIVE} + cd .. + ln -sf apps/openssl.pod crypto/crypto.pod ssl/ssl.pod doc/ + + os=${HOST_OS} + if [ "x$os" = "xlinux-uclibc" ]; then + os=linux + elif [ "x$os" = "xlinux-uclibceabi" ]; then + os=linux + elif [ "x$os" = "xlinux-uclibcspe" ]; then + os=linux + elif [ "x$os" = "xlinux-gnuspe" ]; then + os=linux + elif [ "x$os" = "xlinux-gnueabi" ]; then + os=linux + fi + target="$os-${HOST_ARCH}" + case $target in + linux-arm) + target=linux-armv4 + ;; + linux-armeb) + target=linux-elf-armeb + ;; + linux-aarch64*) + target=linux-generic64 + ;; + linux-sh3) + target=debian-sh3 + ;; + linux-sh4) + target=debian-sh4 + ;; + linux-i486) + target=debian-i386-i486 + ;; + linux-i586 | linux-viac3) + target=debian-i386-i586 + ;; + linux-i686) + target=debian-i386-i686/cmov + ;; + linux-gnux32-x86_64) + target=linux-x32 + ;; + linux-gnu64-x86_64) + target=linux-x86_64 + ;; + linux-mips) + target=debian-mips + ;; + linux-mipsel) + target=debian-mipsel + ;; + linux-*-mips64) + target=linux-mips + ;; + linux-powerpc) + target=linux-ppc + ;; + linux-powerpc64) + target=linux-ppc64 + ;; + linux-supersparc) + target=linux-sparcv8 + ;; + linux-sparc) + target=linux-sparcv8 + ;; + darwin-i386) + target=darwin-i386-cc + ;; + esac + # inject machine-specific flags + sed -i -e "s|^\(\"$target\",\s*\"[^:]\+\):\([^:]\+\)|\1:${CFLAG}|g" Configure + useprefix=${prefix} + if [ "x$useprefix" = "x" ]; then + useprefix=/ + fi + perl ./Configure ${EXTRA_OECONF} shared --prefix=$useprefix --openssldir=${libdir}/ssl --libdir=`basename ${libdir}` $target +} + +do_compile () { + oe_runmake +} + +do_install () { + oe_runmake INSTALL_PREFIX="${D}" MANDIR="${mandir}" install + + oe_libinstall -so libcrypto ${D}${libdir} + oe_libinstall -so libssl ${D}${libdir} + + # Moving libcrypto to /lib + if [ ! ${D}${libdir} -ef ${D}${base_libdir} ]; then + mkdir -p ${D}/${base_libdir}/ + mv ${D}${libdir}/libcrypto* ${D}${base_libdir}/ + sed -i s#libdir=\$\{exec_prefix\}\/lib#libdir=${base_libdir}# ${D}/${libdir}/pkgconfig/libcrypto.pc + fi + + install -d ${D}${includedir} + cp --dereference -R include/openssl ${D}${includedir} + + oe_multilib_header openssl/opensslconf.h + if [ "${@base_contains('PACKAGECONFIG', 'perl', 'perl', '', d)}" = "perl" ]; then + install -m 0755 ${S}/tools/c_rehash ${D}${bindir} + sed -i -e '1s,.*,#!${bindir}/env perl,' ${D}${bindir}/c_rehash + sed -i -e '1s,.*,#!${bindir}/env perl,' ${D}${libdir}/ssl/misc/CA.pl + sed -i -e '1s,.*,#!${bindir}/env perl,' ${D}${libdir}/ssl/misc/tsget + # The c_rehash utility isn't installed by the normal installation process. + else + rm -f ${D}${bindir}/c_rehash + rm -f ${D}${libdir}/ssl/misc/CA.pl ${D}${libdir}/ssl/misc/tsget + fi +} + +BBCLASSEXTEND = "native nativesdk" + diff --git a/meta-edison-distro/recipes-connectivity/openssl/openssl/configure-targets.patch b/meta-edison-distro/recipes-connectivity/openssl/openssl/configure-targets.patch new file mode 100644 index 0000000..c1f3d08 --- /dev/null +++ b/meta-edison-distro/recipes-connectivity/openssl/openssl/configure-targets.patch @@ -0,0 +1,34 @@ +Upstream-Status: Inappropriate [embedded specific] + +The number of colons are important :) + + +--- + Configure | 16 ++++++++++++++++ + 1 file changed, 16 insertions(+) + +--- a/Configure ++++ b/Configure +@@ -403,6 +403,22 @@ my %table=( + "linux-alpha-ccc","ccc:-fast -readonly_strings -DL_ENDIAN -DTERMIO::-D_REENTRANT:::SIXTY_FOUR_BIT_LONG RC4_CHUNK DES_INT DES_PTR DES_RISC1 DES_UNROLL:${alpha_asm}", + "linux-alpha+bwx-ccc","ccc:-fast -readonly_strings -DL_ENDIAN -DTERMIO::-D_REENTRANT:::SIXTY_FOUR_BIT_LONG RC4_CHAR RC4_CHUNK DES_INT DES_PTR DES_RISC1 DES_UNROLL:${alpha_asm}", + ++ # Linux on ARM ++"linux-elf-arm","$ENV{'CC'}:-DL_ENDIAN -DTERMIO -O3 -fomit-frame-pointer -Wall::-D_REENTRANT::-ldl:BN_LLONG DES_RISC1:${no_asm}:dlfcn:linux-shared:-fPIC::.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)", ++"linux-elf-armeb","$ENV{'CC'}:-DB_ENDIAN -DTERMIO -O3 -fomit-frame-pointer -Wall::-D_REENTRANT::-ldl:BN_LLONG DES_RISC1:${no_asm}:dlfcn:linux-shared:-fPIC::.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)", ++"linux-gnueabi-arm","$ENV{'CC'}:-DL_ENDIAN -DTERMIO -O3 -fomit-frame-pointer -Wall::-D_REENTRANT::-ldl:BN_LLONG DES_RISC1:${no_asm}:dlfcn:linux-shared:-fPIC::.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)", ++"linux-gnueabi-armeb","$ENV{'CC'}:-DB_ENDIAN -DTERMIO -O3 -fomit-frame-pointer -Wall::-D_REENTRANT::-ldl:BN_LLONG DES_RISC1:${no_asm}:dlfcn:linux-shared:-fPIC::.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)", ++"linux-uclibceabi-arm","$ENV{'CC'}:-DL_ENDIAN -DTERMIO -O3 -fomit-frame-pointer -Wall::-D_REENTRANT::-ldl:BN_LLONG DES_RISC1:${no_asm}:dlfcn:linux-shared:-fPIC::.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)", ++"linux-uclibceabi-armeb","$ENV{'CC'}:-DB_ENDIAN -DTERMIO -O3 -fomit-frame-pointer -Wall::-D_REENTRANT::-ldl:BN_LLONG DES_RISC1:${no_asm}:dlfcn:linux-shared:-fPIC::.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)", ++ ++"linux-avr32","$ENV{'CC'}:-DTERMIO -O3 -fomit-frame-pointer -Wall::-D_REENTRANT::-ldl:BN_LLONG DES_RISC1:${no_asm}:dlfcn:linux-shared:-fPIC::.so.\$(SHLIB_MAJOR).", ++ ++#### Linux on MIPS/MIPS64 ++"linux-mips","$ENV{'CC'}:-DB_ENDIAN -DTERMIO -O3 -fomit-frame-pointer -Wall::-D_REENTRANT::-ldl:BN_LLONG RC2_CHAR RC4_INDEX DES_INT DES_UNROLL DES_RISC2:${no_asm}:dlfcn:linux-shared:-fPIC::.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)", ++"linux-mips64","$ENV{'CC'}:-DB_ENDIAN -DTERMIO -mabi=64 -O3 -fomit-frame-pointer -Wall::-D_REENTRANT::-ldl:SIXTY_FOUR_BIT_LONG RC2_CHAR RC4_INDEX DES_INT DES_UNROLL DES_RISC2:${no_asm}:dlfcn:linux-shared:-fPIC::.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)", ++"linux-mips64el","$ENV{'CC'}:-DL_ENDIAN -DTERMIO -mabi=64 -O3 -fomit-frame-pointer -Wall::-D_REENTRANT::-ldl:SIXTY_FOUR_BIT_LONG RC2_CHAR RC4_INDEX DES_INT DES_UNROLL DES_RISC2:${no_asm}:dlfcn:linux-shared:-fPIC::.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)", ++"linux-mipsel","$ENV{'CC'}:-DL_ENDIAN -DTERMIO -O3 -fomit-frame-pointer -Wall::-D_REENTRANT::-ldl:BN_LLONG RC2_CHAR RC4_INDEX DES_INT DES_UNROLL DES_RISC2:${no_asm}:dlfcn:linux-shared:-fPIC::.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)", ++ + # Android: linux-* but without -DTERMIO and pointers to headers and libs. + "android","gcc:-mandroid -I\$(ANDROID_DEV)/include -B\$(ANDROID_DEV)/lib -O3 -fomit-frame-pointer -Wall::-D_REENTRANT::-ldl:BN_LLONG RC4_CHAR RC4_CHUNK DES_INT DES_UNROLL BF_PTR:${no_asm}:dlfcn:linux-shared:-fPIC::.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)", + "android-x86","gcc:-mandroid -I\$(ANDROID_DEV)/include -B\$(ANDROID_DEV)/lib -O3 -fomit-frame-pointer -Wall::-D_REENTRANT::-ldl:BN_LLONG ${x86_gcc_des} ${x86_gcc_opts}:".eval{my $asm=${x86_elf_asm};$asm=~s/:elf/:android/;$asm}.":dlfcn:linux-shared:-fPIC::.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)", diff --git a/meta-edison-distro/recipes-connectivity/openssl/openssl/debian/c_rehash-compat.patch b/meta-edison-distro/recipes-connectivity/openssl/openssl/debian/c_rehash-compat.patch new file mode 100644 index 0000000..ac1b19b --- /dev/null +++ b/meta-edison-distro/recipes-connectivity/openssl/openssl/debian/c_rehash-compat.patch @@ -0,0 +1,45 @@ +Upstream-Status: Backport [debian] + +From 83f318d68bbdab1ca898c94576a838cc97df4700 Mon Sep 17 00:00:00 2001 +From: Ludwig Nussel <ludwig.nussel@suse.de> +Date: Wed, 21 Apr 2010 15:52:10 +0200 +Subject: [PATCH] also create old hash for compatibility + +--- + tools/c_rehash.in | 8 +++++++- + 1 files changed, 7 insertions(+), 1 deletions(-) + +Index: openssl-1.0.0d/tools/c_rehash.in +=================================================================== +--- openssl-1.0.0d.orig/tools/c_rehash.in 2011-04-13 20:41:28.000000000 +0000 ++++ openssl-1.0.0d/tools/c_rehash.in 2011-04-13 20:41:28.000000000 +0000 +@@ -86,6 +86,7 @@ + } + } + link_hash_cert($fname) if($cert); ++ link_hash_cert_old($fname) if($cert); + link_hash_crl($fname) if($crl); + } + } +@@ -119,8 +120,9 @@ + + sub link_hash_cert { + my $fname = $_[0]; ++ my $hashopt = $_[1] || '-subject_hash'; + $fname =~ s/'/'\\''/g; +- my ($hash, $fprint) = `"$openssl" x509 -hash -fingerprint -noout -in "$fname"`; ++ my ($hash, $fprint) = `"$openssl" x509 $hashopt -fingerprint -noout -in "$fname"`; + chomp $hash; + chomp $fprint; + $fprint =~ s/^.*=//; +@@ -150,6 +152,10 @@ + $hashlist{$hash} = $fprint; + } + ++sub link_hash_cert_old { ++ link_hash_cert($_[0], '-subject_hash_old'); ++} ++ + # Same as above except for a CRL. CRL links are of the form <hash>.r<n> + + sub link_hash_crl { diff --git a/meta-edison-distro/recipes-connectivity/openssl/openssl/debian/ca.patch b/meta-edison-distro/recipes-connectivity/openssl/openssl/debian/ca.patch new file mode 100644 index 0000000..aba4d42 --- /dev/null +++ b/meta-edison-distro/recipes-connectivity/openssl/openssl/debian/ca.patch @@ -0,0 +1,22 @@ +Upstream-Status: Backport [debian] + +Index: openssl-0.9.8m/apps/CA.pl.in +=================================================================== +--- openssl-0.9.8m.orig/apps/CA.pl.in 2006-04-28 00:28:51.000000000 +0000 ++++ openssl-0.9.8m/apps/CA.pl.in 2010-02-27 00:36:51.000000000 +0000 +@@ -65,6 +65,7 @@ + foreach (@ARGV) { + if ( /^(-\?|-h|-help)$/ ) { + print STDERR "usage: CA -newcert|-newreq|-newreq-nodes|-newca|-sign|-verify\n"; ++ print STDERR "usage: CA -signcert certfile keyfile|-newcert|-newreq|-newca|-sign|-verify\n"; + exit 0; + } elsif (/^-newcert$/) { + # create a certificate +@@ -165,6 +166,7 @@ + } else { + print STDERR "Unknown arg $_\n"; + print STDERR "usage: CA -newcert|-newreq|-newreq-nodes|-newca|-sign|-verify\n"; ++ print STDERR "usage: CA -signcert certfile keyfile|-newcert|-newreq|-newca|-sign|-verify\n"; + exit 1; + } + } diff --git a/meta-edison-distro/recipes-connectivity/openssl/openssl/debian/debian-targets.patch b/meta-edison-distro/recipes-connectivity/openssl/openssl/debian/debian-targets.patch new file mode 100644 index 0000000..8101edf --- /dev/null +++ b/meta-edison-distro/recipes-connectivity/openssl/openssl/debian/debian-targets.patch @@ -0,0 +1,66 @@ +Upstream-Status: Backport [debian] + +Index: openssl-1.0.1/Configure +=================================================================== +--- openssl-1.0.1.orig/Configure 2012-03-17 15:37:54.000000000 +0000 ++++ openssl-1.0.1/Configure 2012-03-17 16:13:49.000000000 +0000 +@@ -105,6 +105,10 @@ + + my $gcc_devteam_warn = "-Wall -pedantic -DPEDANTIC -Wno-long-long -Wsign-compare -Wmissing-prototypes -Wshadow -Wformat -Werror -DCRYPTO_MDEBUG_ALL -DCRYPTO_MDEBUG_ABORT -DREF_CHECK -DOPENSSL_NO_DEPRECATED"; + ++# There are no separate CFLAGS/CPPFLAGS/LDFLAGS, set everything in CFLAGS ++my $debian_cflags = `dpkg-buildflags --get CFLAGS` . `dpkg-buildflags --get CPPFLAGS` . `dpkg-buildflags --get LDFLAGS` . "-Wa,--noexecstack -Wall"; ++$debian_cflags =~ s/\n/ /g; ++ + my $strict_warnings = 0; + + my $x86_gcc_des="DES_PTR DES_RISC1 DES_UNROLL"; +@@ -338,6 +342,48 @@ + "osf1-alpha-cc", "cc:-std1 -tune host -O4 -readonly_strings::(unknown):::SIXTY_FOUR_BIT_LONG RC4_CHUNK:${alpha_asm}:dlfcn:alpha-osf1-shared:::.so", + "tru64-alpha-cc", "cc:-std1 -tune host -fast -readonly_strings::-pthread:::SIXTY_FOUR_BIT_LONG RC4_CHUNK:${alpha_asm}:dlfcn:alpha-osf1-shared::-msym:.so", + ++# Debian GNU/* (various architectures) ++"debian-alpha","gcc:-DTERMIO ${debian_cflags}::-D_REENTRANT::-ldl:SIXTY_FOUR_BIT_LONG RC4_CHUNK DES_RISC1 DES_UNROLL:${alpha_asm}:dlfcn:linux-shared:-fPIC::.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)", ++"debian-alpha-ev4","gcc:-DTERMIO ${debian_cflags} -mcpu=ev4::-D_REENTRANT::-ldl:SIXTY_FOUR_BIT_LONG RC4_CHUNK DES_RISC1 DES_UNROLL:${alpha_asm}:dlfcn:linux-shared:-fPIC::.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)", ++"debian-alpha-ev5","gcc:-DTERMIO ${debian_cflags} -mcpu=ev5::-D_REENTRANT::-ldl:SIXTY_FOUR_BIT_LONG RC4_CHUNK DES_RISC1 DES_UNROLL:${alpha_asm}:dlfcn:linux-shared:-fPIC::.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)", ++"debian-armeb","gcc:-DB_ENDIAN -DTERMIO ${debian_cflags}::-D_REENTRANT::-ldl:BN_LLONG RC4_CHAR RC4_CHUNK DES_INT DES_UNROLL BF_PTR:${no_asm}:dlfcn:linux-shared:-fPIC::.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)", ++"debian-armel","gcc:-DL_ENDIAN -DTERMIO ${debian_cflags}::-D_REENTRANT::-ldl:BN_LLONG RC4_CHAR RC4_CHUNK DES_INT DES_UNROLL BF_PTR:${no_asm}:dlfcn:linux-shared:-fPIC::.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)", ++"debian-armhf","gcc:-DL_ENDIAN -DTERMIO ${debian_cflags}::-D_REENTRANT::-ldl:BN_LLONG RC4_CHAR RC4_CHUNK DES_INT DES_UNROLL BF_PTR:${no_asm}:dlfcn:linux-shared:-fPIC::.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)", ++"debian-amd64", "gcc:-m64 -DL_ENDIAN -DTERMIO ${debian_cflags} -DMD32_REG_T=int::-D_REENTRANT::-ldl:SIXTY_FOUR_BIT_LONG RC4_CHUNK DES_INT DES_UNROLL:${x86_64_asm}:elf:dlfcn:linux-shared:-fPIC:-m64:.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR):::", ++"debian-avr32", "gcc:-DB_ENDIAN -DTERMIO ${debian_cflags} -fomit-frame-pointer::-D_REENTRANT::-ldl:BN_LLONG_BF_PTR:${no_asm}:dlfcn:linux-shared:-fPIC::.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)", ++"debian-kfreebsd-amd64","gcc:-m64 -DL_ENDIAN -DTERMIOS ${debian_cflags} -DMD32_REG_T=int::-D_REENTRANT::-ldl:SIXTY_FOUR_BIT_LONG RC4_CHUNK DES_INT DES_UNROLL:${x86_64_asm}:elf:dlfcn:linux-shared:-fPIC:-m64:.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)", ++"debian-kfreebsd-i386","gcc:-DL_ENDIAN -DTERMIOS ${debian_cflags} -march=i486::-D_REENTRANT::-ldl:BN_LLONG ${x86_gcc_des} ${x86_gcc_opts}:${x86_elf_asm}:dlfcn:linux-shared:-fPIC::.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)", ++"debian-hppa","gcc:-DB_ENDIAN -DTERMIO ${debian_cflags}::-D_REENTRANT::-ldl:BN_LLONG MD2_CHAR RC4_INDEX:${no_asm}:dlfcn:linux-shared:-fPIC::.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)", ++"debian-hurd-i386","gcc:-DL_ENDIAN -DTERMIOS -O3 -Wa,--noexecstack -g -mtune=i486 -Wall::-D_REENTRANT::-ldl:BN_LLONG ${x86_gcc_des} ${x86_gcc_opts}:${x86_elf_asm}:dlfcn:linux-shared:-fPIC::.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)", ++"debian-ia64","gcc:-DTERMIO ${debian_cflags}::-D_REENTRANT::-ldl:SIXTY_FOUR_BIT_LONG RC4_CHUNK DES_UNROLL DES_INT:${ia64_asm}:dlfcn:linux-shared:-fPIC::.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)", ++"debian-i386","gcc:-DL_ENDIAN -DTERMIO ${debian_cflags}::-D_REENTRANT::-ldl:BN_LLONG ${x86_gcc_des} ${x86_gcc_opts}:${x86_elf_asm}:dlfcn:linux-shared:-fPIC::.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)", ++"debian-i386-i486","gcc:-DL_ENDIAN -DTERMIO ${debian_cflags} -march=i486::-D_REENTRANT::-ldl:BN_LLONG ${x86_gcc_des} ${x86_gcc_opts}:${x86_elf_asm}:dlfcn:linux-shared:-fPIC::.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)", ++"debian-i386-i586","gcc:-DL_ENDIAN -DTERMIO ${debian_cflags} -march=i586::-D_REENTRANT::-ldl:BN_LLONG ${x86_gcc_des} ${x86_gcc_opts}:${x86_elf_asm}:dlfcn:linux-shared:-fPIC::.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)", ++"debian-i386-i686/cmov","gcc:-DL_ENDIAN -DTERMIO ${debian_cflags} -march=i686::-D_REENTRANT::-ldl:BN_LLONG ${x86_gcc_des} ${x86_gcc_opts}:${x86_elf_asm}:dlfcn:linux-shared:-fPIC::.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)", ++"debian-m68k","gcc:-DB_ENDIAN -DTERMIO ${debian_cflags}::-D_REENTRANT::-ldl:BN_LLONG MD2_CHAR RC4_INDEX:${no_asm}:dlfcn:linux-shared:-fPIC::.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)", ++"debian-mips", "gcc:-DB_ENDIAN -DTERMIO ${debian_cflags}::-D_REENTRANT::-ldl:BN_LLONG RC2_CHAR RC4_INDEX DES_INT DES_UNROLL DES_RISC2:${no_asm}:dlfcn:linux-shared:-fPIC::.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)", ++"debian-mipsel", "gcc:-DL_ENDIAN -DTERMIO ${debian_cflags}::-D_REENTRANT::-ldl:BN_LLONG RC2_CHAR RC4_INDEX DES_INT DES_UNROLL DES_RISC2:${no_asm}:dlfcn:linux-shared:-fPIC::.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)", ++"debian-netbsd-i386", "gcc:-DL_ENDIAN -DTERMIOS ${debian_cflags} -m486::(unknown):::BN_LLONG ${x86_gcc_des} ${x86_gcc_opts}:${no_asm}:dlfcn:bsd-gcc-shared:-fPIC::.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)", ++"debian-netbsd-m68k", "gcc:-DB_ENDIAN -DTERMIOS ${debian_cflags}::(unknown):::BN_LLONG MD2_CHAR RC4_INDEX DES_UNROLL:${no_asm}:dlfcn:bsd-gcc-shared:-fPIC::.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)", ++"debian-netbsd-sparc", "gcc:-DB_ENDIAN -DTERMIOS ${debian_cflags} -mv8::(unknown):::BN_LLONG MD2_CHAR RC4_INDEX DES_UNROLL:${no_asm}:dlfcn:bsd-gcc-shared:-fPIC::.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)", ++"debian-openbsd-alpha","gcc:-DTERMIOS ${debian_cflags}::(unknown):::SIXTY_FOUR_BIT_LONG DES_INT DES_PTR DES_RISC2:${no_asm}:dlfcn:bsd-gcc-shared:-fPIC::.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)", ++"debian-openbsd-i386", "gcc:-DL_ENDIAN -DTERMIOS ${debian_cflags} -m486::(unknown):::BN_LLONG ${x86_gcc_des} ${x86_gcc_opts}:${x86_asm}:a.out:dlfcn:bsd-gcc-shared:-fPIC::.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)", ++"debian-openbsd-mips","gcc:-DL_ENDIAN ${debian_cflags}::(unknown)::BN_LLONG MD2_CHAR RC4_INDEX RC4_CHAR DES_UNROLL DES_RISC2 DES_PTR BF_PTR:${no_asm}:dlfcn:bsd-gcc-shared:-fPIC::.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)", ++"debian-powerpc","gcc:-DB_ENDIAN -DTERMIO ${debian_cflags}::-D_REENTRANT::-ldl:BN_LLONG RC4_CHAR RC4_CHUNK DES_RISC1 DES_UNROLL:${ppc32_asm}:linux32:dlfcn:linux-shared:-fPIC::.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)", ++"debian-powerpcspe","gcc:-DB_ENDIAN -DTERMIO ${debian_cflags}::-D_REENTRANT::-ldl:BN_LLONG RC4_CHAR RC4_CHUNK DES_RISC1 DES_UNROLL:${ppc32_asm}:linux32:dlfcn:linux-shared:-fPIC::.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)", ++"debian-ppc64","gcc:-m64 -DB_ENDIAN -DTERMIO ${debian_cflags}::-D_REENTRANT::-ldl:SIXTY_FOUR_BIT_LONG RC4_CHAR RC4_CHUNK DES_RISC1 DES_UNROLL:${ppc64_asm}:linux64:dlfcn:linux-shared:-fPIC:-m64:.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)", ++"debian-s390","gcc:-DB_ENDIAN -DTERMIO ${debian_cflags}::-D_REENTRANT::-ldl:RC4_CHAR RC4_CHUNK DES_INT DES_UNROLL:${no_asm}:dlfcn:linux-shared:-fPIC::.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)", ++"debian-s390x","gcc:-DB_ENDIAN -DTERMIO ${debian_cflags}::-D_REENTRANT::-ldl:SIXTY_FOUR_BIT_LONG RC4_CHAR RC4_CHUNK DES_INT DES_UNROLL:${no_asm}:dlfcn:linux-shared:-fPIC::.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)", ++"debian-sh3", "gcc:-DL_ENDIAN -DTERMIO ${debian_cflags}::-D_REENTRANT::-ldl:BN_LLONG:${no_asm}:dlfcn:linux-shared:-fPIC::.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)", ++"debian-sh4", "gcc:-DL_ENDIAN -DTERMIO ${debian_cflags}::-D_REENTRANT::-ldl:BN_LLONG:${no_asm}:dlfcn:linux-shared:-fPIC::.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)", ++"debian-sh3eb", "gcc:-DB_ENDIAN -DTERMIO ${debian_cflags}::-D_REENTRANT::-ldl:BN_LLONG:${no_asm}:dlfcn:linux-shared:-fPIC::.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)", ++"debian-sh4eb", "gcc:-DB_ENDIAN -DTERMIO ${debian_cflags}::-D_REENTRANT::-ldl:BN_LLONG:${no_asm}:dlfcn:linux-shared:-fPIC::.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)", ++"debian-m32r","gcc:-DB_ENDIAN -DTERMIO ${debian_cflags}::-D_REENTRANT::-ldl:BN_LLONG:${no_asm}:dlfcn:linux-shared:-fPIC::.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)", ++"debian-sparc","gcc:-DB_ENDIAN -DTERMIO ${debian_cflags}::-D_REENTRANT::-ldl:BN_LLONG RC4_CHAR RC4_CHUNK DES_UNROLL BF_PTR:${sparcv9_asm}:dlfcn:linux-shared:-fPIC::.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)", ++"debian-sparc-v8","gcc:-DB_ENDIAN -DTERMIO ${debian_cflags} -mcpu=v8 -DBN_DIV2W::-D_REENTRANT::-ldl:BN_LLONG RC4_CHAR RC4_CHUNK DES_UNROLL BF_PTR:${sparcv8_asm}:dlfcn:linux-shared:-fPIC::.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)", ++"debian-sparc-v9","gcc:-DB_ENDIAN -DTERMIO ${debian_cflags} -mcpu=v9 -Wa,-Av8plus -DULTRASPARC -DBN_DIV2W::-D_REENTRANT::-ldl:BN_LLONG RC4_CHAR RC4_CHUNK DES_UNROLL BF_PTR:${sparcv9_asm}:dlfcn:linux-shared:-fPIC::.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)", ++"debian-sparc64","gcc:-m64 -DB_ENDIAN -DTERMIO ${debian_cflags} -DULTRASPARC -DBN_DIV2W::-D_REENTRANT::-ldl:BN_LLONG RC4_CHAR RC4_CHUNK DES_INT DES_PTR DES_RISC1 DES_UNROLL BF_PTR:${sparcv9_asm}:dlfcn:linux-shared:-fPIC:-m64:.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)", ++ + #### + #### Variety of LINUX:-) + #### diff --git a/meta-edison-distro/recipes-connectivity/openssl/openssl/debian/make-targets.patch b/meta-edison-distro/recipes-connectivity/openssl/openssl/debian/make-targets.patch new file mode 100644 index 0000000..ee0a62c --- /dev/null +++ b/meta-edison-distro/recipes-connectivity/openssl/openssl/debian/make-targets.patch @@ -0,0 +1,15 @@ +Upstream-Status: Backport [debian] + +Index: openssl-1.0.1/Makefile.org +=================================================================== +--- openssl-1.0.1.orig/Makefile.org 2012-03-17 09:41:07.000000000 +0000 ++++ openssl-1.0.1/Makefile.org 2012-03-17 09:41:21.000000000 +0000 +@@ -135,7 +135,7 @@ + + BASEADDR= + +-DIRS= crypto ssl engines apps test tools ++DIRS= crypto ssl engines apps tools + ENGDIRS= ccgost + SHLIBDIRS= crypto ssl + diff --git a/meta-edison-distro/recipes-connectivity/openssl/openssl/debian/man-dir.patch b/meta-edison-distro/recipes-connectivity/openssl/openssl/debian/man-dir.patch new file mode 100644 index 0000000..4085e3b --- /dev/null +++ b/meta-edison-distro/recipes-connectivity/openssl/openssl/debian/man-dir.patch @@ -0,0 +1,15 @@ +Upstream-Status: Backport [debian] + +Index: openssl-1.0.0c/Makefile.org +=================================================================== +--- openssl-1.0.0c.orig/Makefile.org 2010-12-12 16:11:27.000000000 +0100 ++++ openssl-1.0.0c/Makefile.org 2010-12-12 16:11:37.000000000 +0100 +@@ -131,7 +131,7 @@ + + MAKEFILE= Makefile + +-MANDIR=$(OPENSSLDIR)/man ++MANDIR=/usr/share/man + MAN1=1 + MAN3=3 + MANSUFFIX= diff --git a/meta-edison-distro/recipes-connectivity/openssl/openssl/debian/man-section.patch b/meta-edison-distro/recipes-connectivity/openssl/openssl/debian/man-section.patch new file mode 100644 index 0000000..21c1d1a --- /dev/null +++ b/meta-edison-distro/recipes-connectivity/openssl/openssl/debian/man-section.patch @@ -0,0 +1,34 @@ +Upstream-Status: Backport [debian] + +Index: openssl-1.0.0c/Makefile.org +=================================================================== +--- openssl-1.0.0c.orig/Makefile.org 2010-12-12 16:11:37.000000000 +0100 ++++ openssl-1.0.0c/Makefile.org 2010-12-12 16:13:28.000000000 +0100 +@@ -160,7 +160,8 @@ + MANDIR=/usr/share/man + MAN1=1 + MAN3=3 +-MANSUFFIX= ++MANSUFFIX=ssl ++MANSECTION=SSL + HTMLSUFFIX=html + HTMLDIR=$(OPENSSLDIR)/html + SHELL=/bin/sh +@@ -651,7 +652,7 @@ + echo "installing man$$sec/$$fn.$${sec}$(MANSUFFIX)"; \ + (cd `$(PERL) util/dirname.pl $$i`; \ + sh -c "$$pod2man \ +- --section=$$sec --center=OpenSSL \ ++ --section=$${sec}$(MANSECTION) --center=OpenSSL \ + --release=$(VERSION) `basename $$i`") \ + > $(INSTALL_PREFIX)$(MANDIR)/man$$sec/$$fn.$${sec}$(MANSUFFIX); \ + $(PERL) util/extract-names.pl < $$i | \ +@@ -668,7 +669,7 @@ + echo "installing man$$sec/$$fn.$${sec}$(MANSUFFIX)"; \ + (cd `$(PERL) util/dirname.pl $$i`; \ + sh -c "$$pod2man \ +- --section=$$sec --center=OpenSSL \ ++ --section=$${sec}$(MANSECTION) --center=OpenSSL \ + --release=$(VERSION) `basename $$i`") \ + > $(INSTALL_PREFIX)$(MANDIR)/man$$sec/$$fn.$${sec}$(MANSUFFIX); \ + $(PERL) util/extract-names.pl < $$i | \ diff --git a/meta-edison-distro/recipes-connectivity/openssl/openssl/debian/no-rpath.patch b/meta-edison-distro/recipes-connectivity/openssl/openssl/debian/no-rpath.patch new file mode 100644 index 0000000..1ccb3b8 --- /dev/null +++ b/meta-edison-distro/recipes-connectivity/openssl/openssl/debian/no-rpath.patch @@ -0,0 +1,15 @@ +Upstream-Status: Backport [debian] + +Index: openssl-1.0.0c/Makefile.shared +=================================================================== +--- openssl-1.0.0c.orig/Makefile.shared 2010-08-21 13:36:49.000000000 +0200 ++++ openssl-1.0.0c/Makefile.shared 2010-12-12 16:13:36.000000000 +0100 +@@ -153,7 +153,7 @@ + NOALLSYMSFLAGS='-Wl,--no-whole-archive'; \ + SHAREDFLAGS="$(CFLAGS) $(SHARED_LDFLAGS) -shared -Wl,-Bsymbolic -Wl,-soname=$$SHLIB$$SHLIB_SOVER$$SHLIB_SUFFIX" + +-DO_GNU_APP=LDFLAGS="$(CFLAGS) -Wl,-rpath,$(LIBRPATH)" ++DO_GNU_APP=LDFLAGS="$(CFLAGS)" + + #This is rather special. It's a special target with which one can link + #applications without bothering with any features that have anything to diff --git a/meta-edison-distro/recipes-connectivity/openssl/openssl/debian/no-symbolic.patch b/meta-edison-distro/recipes-connectivity/openssl/openssl/debian/no-symbolic.patch new file mode 100644 index 0000000..cc4408a --- /dev/null +++ b/meta-edison-distro/recipes-connectivity/openssl/openssl/debian/no-symbolic.patch @@ -0,0 +1,15 @@ +Upstream-Status: Backport [debian] + +Index: openssl-1.0.0c/Makefile.shared +=================================================================== +--- openssl-1.0.0c.orig/Makefile.shared 2010-12-12 16:13:36.000000000 +0100 ++++ openssl-1.0.0c/Makefile.shared 2010-12-12 16:13:44.000000000 +0100 +@@ -151,7 +151,7 @@ + SHLIB_SUFFIX=; \ + ALLSYMSFLAGS='-Wl,--whole-archive'; \ + NOALLSYMSFLAGS='-Wl,--no-whole-archive'; \ +- SHAREDFLAGS="$(CFLAGS) $(SHARED_LDFLAGS) -shared -Wl,-Bsymbolic -Wl,-soname=$$SHLIB$$SHLIB_SOVER$$SHLIB_SUFFIX" ++ SHAREDFLAGS="$(CFLAGS) $(SHARED_LDFLAGS) -shared -Wl,-soname=$$SHLIB$$SHLIB_SOVER$$SHLIB_SUFFIX" + + DO_GNU_APP=LDFLAGS="$(CFLAGS)" + diff --git a/meta-edison-distro/recipes-connectivity/openssl/openssl/debian/pic.patch b/meta-edison-distro/recipes-connectivity/openssl/openssl/debian/pic.patch new file mode 100644 index 0000000..bfda388 --- /dev/null +++ b/meta-edison-distro/recipes-connectivity/openssl/openssl/debian/pic.patch @@ -0,0 +1,177 @@ +Upstream-Status: Backport [debian] + +Index: openssl-1.0.1c/crypto/des/asm/desboth.pl +=================================================================== +--- openssl-1.0.1c.orig/crypto/des/asm/desboth.pl 2001-10-24 23:20:56.000000000 +0200 ++++ openssl-1.0.1c/crypto/des/asm/desboth.pl 2012-07-29 14:15:26.000000000 +0200 +@@ -16,6 +16,11 @@ + + &push("edi"); + ++ &call (&label("pic_point0")); ++ &set_label("pic_point0"); ++ &blindpop("ebp"); ++ &add ("ebp", "\$_GLOBAL_OFFSET_TABLE_+[.-" . &label("pic_point0") . "]"); ++ + &comment(""); + &comment("Load the data words"); + &mov($L,&DWP(0,"ebx","",0)); +@@ -47,15 +52,21 @@ + &mov(&swtmp(2), (DWC(($enc)?"1":"0"))); + &mov(&swtmp(1), "eax"); + &mov(&swtmp(0), "ebx"); +- &call("DES_encrypt2"); ++ &exch("ebx", "ebp"); ++ &call("DES_encrypt2\@PLT"); ++ &exch("ebx", "ebp"); + &mov(&swtmp(2), (DWC(($enc)?"0":"1"))); + &mov(&swtmp(1), "edi"); + &mov(&swtmp(0), "ebx"); +- &call("DES_encrypt2"); ++ &exch("ebx", "ebp"); ++ &call("DES_encrypt2\@PLT"); ++ &exch("ebx", "ebp"); + &mov(&swtmp(2), (DWC(($enc)?"1":"0"))); + &mov(&swtmp(1), "esi"); + &mov(&swtmp(0), "ebx"); +- &call("DES_encrypt2"); ++ &exch("ebx", "ebp"); ++ &call("DES_encrypt2\@PLT"); ++ &exch("ebx", "ebp"); + + &stack_pop(3); + &mov($L,&DWP(0,"ebx","",0)); +Index: openssl-1.0.1c/crypto/perlasm/cbc.pl +=================================================================== +--- openssl-1.0.1c.orig/crypto/perlasm/cbc.pl 2011-07-13 08:22:46.000000000 +0200 ++++ openssl-1.0.1c/crypto/perlasm/cbc.pl 2012-07-29 14:15:26.000000000 +0200 +@@ -122,7 +122,11 @@ + &mov(&DWP($data_off,"esp","",0), "eax"); # put in array for call + &mov(&DWP($data_off+4,"esp","",0), "ebx"); # + +- &call($enc_func); ++ &call (&label("pic_point0")); ++ &set_label("pic_point0"); ++ &blindpop("ebx"); ++ &add ("ebx", "\$_GLOBAL_OFFSET_TABLE_+[.-" . &label("pic_point0") . "]"); ++ &call("$enc_func\@PLT"); + + &mov("eax", &DWP($data_off,"esp","",0)); + &mov("ebx", &DWP($data_off+4,"esp","",0)); +@@ -185,7 +189,11 @@ + &mov(&DWP($data_off,"esp","",0), "eax"); # put in array for call + &mov(&DWP($data_off+4,"esp","",0), "ebx"); # + +- &call($enc_func); ++ &call (&label("pic_point1")); ++ &set_label("pic_point1"); ++ &blindpop("ebx"); ++ &add ("ebx", "\$_GLOBAL_OFFSET_TABLE_+[.-" . &label("pic_point1") . "]"); ++ &call("$enc_func\@PLT"); + + &mov("eax", &DWP($data_off,"esp","",0)); + &mov("ebx", &DWP($data_off+4,"esp","",0)); +@@ -218,7 +226,11 @@ + &mov(&DWP($data_off,"esp","",0), "eax"); # put back + &mov(&DWP($data_off+4,"esp","",0), "ebx"); # + +- &call($dec_func); ++ &call (&label("pic_point2")); ++ &set_label("pic_point2"); ++ &blindpop("ebx"); ++ &add ("ebx", "\$_GLOBAL_OFFSET_TABLE_+[.-" . &label("pic_point2") . "]"); ++ &call("$dec_func\@PLT"); + + &mov("eax", &DWP($data_off,"esp","",0)); # get return + &mov("ebx", &DWP($data_off+4,"esp","",0)); # +@@ -261,7 +273,11 @@ + &mov(&DWP($data_off,"esp","",0), "eax"); # put back + &mov(&DWP($data_off+4,"esp","",0), "ebx"); # + +- &call($dec_func); ++ &call (&label("pic_point3")); ++ &set_label("pic_point3"); ++ &blindpop("ebx"); ++ &add ("ebx", "\$_GLOBAL_OFFSET_TABLE_+[.-" . &label("pic_point3") . "]"); ++ &call("$dec_func\@PLT"); + + &mov("eax", &DWP($data_off,"esp","",0)); # get return + &mov("ebx", &DWP($data_off+4,"esp","",0)); # +Index: openssl-1.0.1c/crypto/perlasm/x86gas.pl +=================================================================== +--- openssl-1.0.1c.orig/crypto/perlasm/x86gas.pl 2011-12-09 20:16:35.000000000 +0100 ++++ openssl-1.0.1c/crypto/perlasm/x86gas.pl 2012-07-29 14:15:26.000000000 +0200 +@@ -161,6 +161,7 @@ + if ($::macosx) { push (@out,"$tmp,2\n"); } + elsif ($::elf) { push (@out,"$tmp,4\n"); } + else { push (@out,"$tmp\n"); } ++ if ($::elf) { push (@out,".hidden\tOPENSSL_ia32cap_P\n"); } + } + push(@out,$initseg) if ($initseg); + } +@@ -218,8 +219,23 @@ + elsif ($::elf) + { $initseg.=<<___; + .section .init ++___ ++ if ($::pic) ++ { $initseg.=<<___; ++ pushl %ebx ++ call .pic_point0 ++.pic_point0: ++ popl %ebx ++ addl \$_GLOBAL_OFFSET_TABLE_+[.-.pic_point0],%ebx ++ call $f\@PLT ++ popl %ebx ++___ ++ } ++ else ++ { $initseg.=<<___; + call $f + ___ ++ } + } + elsif ($::coff) + { $initseg.=<<___; # applies to both Cygwin and Mingw +Index: openssl-1.0.1c/crypto/x86cpuid.pl +=================================================================== +--- openssl-1.0.1c.orig/crypto/x86cpuid.pl 2012-02-28 15:20:34.000000000 +0100 ++++ openssl-1.0.1c/crypto/x86cpuid.pl 2012-07-29 14:15:26.000000000 +0200 +@@ -8,6 +8,8 @@ + + for (@ARGV) { $sse2=1 if (/-DOPENSSL_IA32_SSE2/); } + ++push(@out, ".hidden OPENSSL_ia32cap_P\n"); ++ + &function_begin("OPENSSL_ia32_cpuid"); + &xor ("edx","edx"); + &pushf (); +@@ -139,9 +141,7 @@ + &set_label("nocpuid"); + &function_end("OPENSSL_ia32_cpuid"); + +-&external_label("OPENSSL_ia32cap_P"); +- +-&function_begin_B("OPENSSL_rdtsc","EXTRN\t_OPENSSL_ia32cap_P:DWORD"); ++&function_begin_B("OPENSSL_rdtsc"); + &xor ("eax","eax"); + &xor ("edx","edx"); + &picmeup("ecx","OPENSSL_ia32cap_P"); +@@ -155,7 +155,7 @@ + # This works in Ring 0 only [read DJGPP+MS-DOS+privileged DPMI host], + # but it's safe to call it on any [supported] 32-bit platform... + # Just check for [non-]zero return value... +-&function_begin_B("OPENSSL_instrument_halt","EXTRN\t_OPENSSL_ia32cap_P:DWORD"); ++&function_begin_B("OPENSSL_instrument_halt"); + &picmeup("ecx","OPENSSL_ia32cap_P"); + &bt (&DWP(0,"ecx"),4); + &jnc (&label("nohalt")); # no TSC +@@ -222,7 +222,7 @@ + &ret (); + &function_end_B("OPENSSL_far_spin"); + +-&function_begin_B("OPENSSL_wipe_cpu","EXTRN\t_OPENSSL_ia32cap_P:DWORD"); ++&function_begin_B("OPENSSL_wipe_cpu"); + &xor ("eax","eax"); + &xor ("edx","edx"); + &picmeup("ecx","OPENSSL_ia32cap_P"); diff --git a/meta-edison-distro/recipes-connectivity/openssl/openssl/debian/version-script.patch b/meta-edison-distro/recipes-connectivity/openssl/openssl/debian/version-script.patch new file mode 100644 index 0000000..ece8b9b --- /dev/null +++ b/meta-edison-distro/recipes-connectivity/openssl/openssl/debian/version-script.patch @@ -0,0 +1,4670 @@ +Upstream-Status: Backport [debian] + +Index: openssl-1.0.1d/Configure +=================================================================== +--- openssl-1.0.1d.orig/Configure 2013-02-06 19:41:43.000000000 +0100 ++++ openssl-1.0.1d/Configure 2013-02-06 19:41:43.000000000 +0100 +@@ -1621,6 +1621,8 @@ + } + } + ++$shared_ldflag .= " -Wl,--version-script=openssl.ld"; ++ + open(IN,'<Makefile.org') || die "unable to read Makefile.org:$!\n"; + unlink("$Makefile.new") || die "unable to remove old $Makefile.new:$!\n" if -e "$Makefile.new"; + open(OUT,">$Makefile.new") || die "unable to create $Makefile.new:$!\n"; +Index: openssl-1.0.1d/openssl.ld +=================================================================== +--- /dev/null 1970-01-01 00:00:00.000000000 +0000 ++++ openssl-1.0.1d/openssl.ld 2013-02-06 19:44:25.000000000 +0100 +@@ -0,0 +1,4620 @@ ++OPENSSL_1.0.0 { ++ global: ++ BIO_f_ssl; ++ BIO_new_buffer_ssl_connect; ++ BIO_new_ssl; ++ BIO_new_ssl_connect; ++ BIO_proxy_ssl_copy_session_id; ++ BIO_ssl_copy_session_id; ++ BIO_ssl_shutdown; ++ d2i_SSL_SESSION; ++ DTLSv1_client_method; ++ DTLSv1_method; ++ DTLSv1_server_method; ++ ERR_load_SSL_strings; ++ i2d_SSL_SESSION; ++ kssl_build_principal_2; ++ kssl_cget_tkt; ++ kssl_check_authent; ++ kssl_ctx_free; ++ kssl_ctx_new; ++ kssl_ctx_setkey; ++ kssl_ctx_setprinc; ++ kssl_ctx_setstring; ++ kssl_ctx_show; ++ kssl_err_set; ++ kssl_krb5_free_data_contents; ++ kssl_sget_tkt; ++ kssl_skip_confound; ++ kssl_validate_times; ++ PEM_read_bio_SSL_SESSION; ++ PEM_read_SSL_SESSION; ++ PEM_write_bio_SSL_SESSION; ++ PEM_write_SSL_SESSION; ++ SSL_accept; ++ SSL_add_client_CA; ++ SSL_add_dir_cert_subjects_to_stack; ++ SSL_add_dir_cert_subjs_to_stk; ++ SSL_add_file_cert_subjects_to_stack; ++ SSL_add_file_cert_subjs_to_stk; ++ SSL_alert_desc_string; ++ SSL_alert_desc_string_long; ++ SSL_alert_type_string; ++ SSL_alert_type_string_long; ++ SSL_callback_ctrl; ++ SSL_check_private_key; ++ SSL_CIPHER_description; ++ SSL_CIPHER_get_bits; ++ SSL_CIPHER_get_name; ++ SSL_CIPHER_get_version; ++ SSL_clear; ++ SSL_COMP_add_compression_method; ++ SSL_COMP_get_compression_methods; ++ SSL_COMP_get_compress_methods; ++ SSL_COMP_get_name; ++ SSL_connect; ++ SSL_copy_session_id; ++ SSL_ctrl; ++ SSL_CTX_add_client_CA; ++ SSL_CTX_add_session; ++ SSL_CTX_callback_ctrl; ++ SSL_CTX_check_private_key; ++ SSL_CTX_ctrl; ++ SSL_CTX_flush_sessions; ++ SSL_CTX_free; ++ SSL_CTX_get_cert_store; ++ SSL_CTX_get_client_CA_list; ++ SSL_CTX_get_client_cert_cb; ++ SSL_CTX_get_ex_data; ++ SSL_CTX_get_ex_new_index; ++ SSL_CTX_get_info_callback; ++ SSL_CTX_get_quiet_shutdown; ++ SSL_CTX_get_timeout; ++ SSL_CTX_get_verify_callback; ++ SSL_CTX_get_verify_depth; ++ SSL_CTX_get_verify_mode; ++ SSL_CTX_load_verify_locations; ++ SSL_CTX_new; ++ SSL_CTX_remove_session; ++ SSL_CTX_sess_get_get_cb; ++ SSL_CTX_sess_get_new_cb; ++ SSL_CTX_sess_get_remove_cb; ++ SSL_CTX_sessions; ++ SSL_CTX_sess_set_get_cb; ++ SSL_CTX_sess_set_new_cb; ++ SSL_CTX_sess_set_remove_cb; ++ SSL_CTX_set1_param; ++ SSL_CTX_set_cert_store; ++ SSL_CTX_set_cert_verify_callback; ++ SSL_CTX_set_cert_verify_cb; ++ SSL_CTX_set_cipher_list; ++ SSL_CTX_set_client_CA_list; ++ SSL_CTX_set_client_cert_cb; ++ SSL_CTX_set_client_cert_engine; ++ SSL_CTX_set_cookie_generate_cb; ++ SSL_CTX_set_cookie_verify_cb; ++ SSL_CTX_set_default_passwd_cb; ++ SSL_CTX_set_default_passwd_cb_userdata; ++ SSL_CTX_set_default_verify_paths; ++ SSL_CTX_set_def_passwd_cb_ud; ++ SSL_CTX_set_def_verify_paths; ++ SSL_CTX_set_ex_data; ++ SSL_CTX_set_generate_session_id; ++ SSL_CTX_set_info_callback; ++ SSL_CTX_set_msg_callback; ++ SSL_CTX_set_psk_client_callback; ++ SSL_CTX_set_psk_server_callback; ++ SSL_CTX_set_purpose; ++ SSL_CTX_set_quiet_shutdown; ++ SSL_CTX_set_session_id_context; ++ SSL_CTX_set_ssl_version; ++ SSL_CTX_set_timeout; ++ SSL_CTX_set_tmp_dh_callback; ++ SSL_CTX_set_tmp_ecdh_callback; ++ SSL_CTX_set_tmp_rsa_callback; ++ SSL_CTX_set_trust; ++ SSL_CTX_set_verify; ++ SSL_CTX_set_verify_depth; ++ SSL_CTX_use_cert_chain_file; ++ SSL_CTX_use_certificate; ++ SSL_CTX_use_certificate_ASN1; ++ SSL_CTX_use_certificate_chain_file; ++ SSL_CTX_use_certificate_file; ++ SSL_CTX_use_PrivateKey; ++ SSL_CTX_use_PrivateKey_ASN1; ++ SSL_CTX_use_PrivateKey_file; ++ SSL_CTX_use_psk_identity_hint; ++ SSL_CTX_use_RSAPrivateKey; ++ SSL_CTX_use_RSAPrivateKey_ASN1; ++ SSL_CTX_use_RSAPrivateKey_file; ++ SSL_do_handshake; ++ SSL_dup; ++ SSL_dup_CA_list; ++ SSLeay_add_ssl_algorithms; ++ SSL_free; ++ SSL_get1_session; ++ SSL_get_certificate; ++ SSL_get_cipher_list; ++ SSL_get_ciphers; ++ SSL_get_client_CA_list; ++ SSL_get_current_cipher; ++ SSL_get_current_compression; ++ SSL_get_current_expansion; ++ SSL_get_default_timeout; ++ SSL_get_error; ++ SSL_get_ex_data; ++ SSL_get_ex_data_X509_STORE_CTX_idx; ++ SSL_get_ex_d_X509_STORE_CTX_idx; ++ SSL_get_ex_new_index; ++ SSL_get_fd; ++ SSL_get_finished; ++ SSL_get_info_callback; ++ SSL_get_peer_cert_chain; ++ SSL_get_peer_certificate; ++ SSL_get_peer_finished; ++ SSL_get_privatekey; ++ SSL_get_psk_identity; ++ SSL_get_psk_identity_hint; ++ SSL_get_quiet_shutdown; ++ SSL_get_rbio; ++ SSL_get_read_ahead; ++ SSL_get_rfd; ++ SSL_get_servername; ++ SSL_get_servername_type; ++ SSL_get_session; ++ SSL_get_shared_ciphers; ++ SSL_get_shutdown; ++ SSL_get_SSL_CTX; ++ SSL_get_ssl_method; ++ SSL_get_verify_callback; ++ SSL_get_verify_depth; ++ SSL_get_verify_mode; ++ SSL_get_verify_result; ++ SSL_get_version; ++ SSL_get_wbio; ++ SSL_get_wfd; ++ SSL_has_matching_session_id; ++ SSL_library_init; ++ SSL_load_client_CA_file; ++ SSL_load_error_strings; ++ SSL_new; ++ SSL_peek; ++ SSL_pending; ++ SSL_read; ++ SSL_renegotiate; ++ SSL_renegotiate_pending; ++ SSL_rstate_string; ++ SSL_rstate_string_long; ++ SSL_SESSION_cmp; ++ SSL_SESSION_free; ++ SSL_SESSION_get_ex_data; ++ SSL_SESSION_get_ex_new_index; ++ SSL_SESSION_get_id; ++ SSL_SESSION_get_time; ++ SSL_SESSION_get_timeout; ++ SSL_SESSION_hash; ++ SSL_SESSION_new; ++ SSL_SESSION_print; ++ SSL_SESSION_print_fp; ++ SSL_SESSION_set_ex_data; ++ SSL_SESSION_set_time; ++ SSL_SESSION_set_timeout; ++ SSL_set1_param; ++ SSL_set_accept_state; ++ SSL_set_bio; ++ SSL_set_cipher_list; ++ SSL_set_client_CA_list; ++ SSL_set_connect_state; ++ SSL_set_ex_data; ++ SSL_set_fd; ++ SSL_set_generate_session_id; ++ SSL_set_info_callback; ++ SSL_set_msg_callback; ++ SSL_set_psk_client_callback; ++ SSL_set_psk_server_callback; ++ SSL_set_purpose; ++ SSL_set_quiet_shutdown; ++ SSL_set_read_ahead; ++ SSL_set_rfd; ++ SSL_set_session; ++ SSL_set_session_id_context; ++ SSL_set_session_secret_cb; ++ SSL_set_session_ticket_ext; ++ SSL_set_session_ticket_ext_cb; ++ SSL_set_shutdown; ++ SSL_set_SSL_CTX; ++ SSL_set_ssl_method; ++ SSL_set_tmp_dh_callback; ++ SSL_set_tmp_ecdh_callback; ++ SSL_set_tmp_rsa_callback; ++ SSL_set_trust; ++ SSL_set_verify; ++ SSL_set_verify_depth; ++ SSL_set_verify_result; ++ SSL_set_wfd; ++ SSL_shutdown; ++ SSL_state; ++ SSL_state_string; ++ SSL_state_string_long; ++ SSL_use_certificate; ++ SSL_use_certificate_ASN1; ++ SSL_use_certificate_file; ++ SSL_use_PrivateKey; ++ SSL_use_PrivateKey_ASN1; ++ SSL_use_PrivateKey_file; ++ SSL_use_psk_identity_hint; ++ SSL_use_RSAPrivateKey; ++ SSL_use_RSAPrivateKey_ASN1; ++ SSL_use_RSAPrivateKey_file; ++ SSLv23_client_method; ++ SSLv23_method; ++ SSLv23_server_method; ++ SSLv2_client_method; ++ SSLv2_method; ++ SSLv2_server_method; ++ SSLv3_client_method; ++ SSLv3_method; ++ SSLv3_server_method; ++ SSL_version; ++ SSL_want; ++ SSL_write; ++ TLSv1_client_method; ++ TLSv1_method; ++ TLSv1_server_method; ++ ++ ++ SSLeay; ++ SSLeay_version; ++ ASN1_BIT_STRING_asn1_meth; ++ ASN1_HEADER_free; ++ ASN1_HEADER_new; ++ ASN1_IA5STRING_asn1_meth; ++ ASN1_INTEGER_get; ++ ASN1_INTEGER_set; ++ ASN1_INTEGER_to_BN; ++ ASN1_OBJECT_create; ++ ASN1_OBJECT_free; ++ ASN1_OBJECT_new; ++ ASN1_PRINTABLE_type; ++ ASN1_STRING_cmp; ++ ASN1_STRING_dup; ++ ASN1_STRING_free; ++ ASN1_STRING_new; ++ ASN1_STRING_print; ++ ASN1_STRING_set; ++ ASN1_STRING_type_new; ++ ASN1_TYPE_free; ++ ASN1_TYPE_new; ++ ASN1_UNIVERSALSTRING_to_string; ++ ASN1_UTCTIME_check; ++ ASN1_UTCTIME_print; ++ ASN1_UTCTIME_set; ++ ASN1_check_infinite_end; ++ ASN1_d2i_bio; ++ ASN1_d2i_fp; ++ ASN1_digest; ++ ASN1_dup; ++ ASN1_get_object; ++ ASN1_i2d_bio; ++ ASN1_i2d_fp; ++ ASN1_object_size; ++ ASN1_parse; ++ ASN1_put_object; ++ ASN1_sign; ++ ASN1_verify; ++ BF_cbc_encrypt; ++ BF_cfb64_encrypt; ++ BF_ecb_encrypt; ++ BF_encrypt; ++ BF_ofb64_encrypt; ++ BF_options; ++ BF_set_key; ++ BIO_CONNECT_free; ++ BIO_CONNECT_new; ++ BIO_accept; ++ BIO_ctrl; ++ BIO_int_ctrl; ++ BIO_debug_callback; ++ BIO_dump; ++ BIO_dup_chain; ++ BIO_f_base64; ++ BIO_f_buffer; ++ BIO_f_cipher; ++ BIO_f_md; ++ BIO_f_null; ++ BIO_f_proxy_server; ++ BIO_fd_non_fatal_error; ++ BIO_fd_should_retry; ++ BIO_find_type; ++ BIO_free; ++ BIO_free_all; ++ BIO_get_accept_socket; ++ BIO_get_filter_bio; ++ BIO_get_host_ip; ++ BIO_get_port; ++ BIO_get_retry_BIO; ++ BIO_get_retry_reason; ++ BIO_gethostbyname; ++ BIO_gets; ++ BIO_new; ++ BIO_new_accept; ++ BIO_new_connect; ++ BIO_new_fd; ++ BIO_new_file; ++ BIO_new_fp; ++ BIO_new_socket; ++ BIO_pop; ++ BIO_printf; ++ BIO_push; ++ BIO_puts; ++ BIO_read; ++ BIO_s_accept; ++ BIO_s_connect; ++ BIO_s_fd; ++ BIO_s_file; ++ BIO_s_mem; ++ BIO_s_null; ++ BIO_s_proxy_client; ++ BIO_s_socket; ++ BIO_set; ++ BIO_set_cipher; ++ BIO_set_tcp_ndelay; ++ BIO_sock_cleanup; ++ BIO_sock_error; ++ BIO_sock_init; ++ BIO_sock_non_fatal_error; ++ BIO_sock_should_retry; ++ BIO_socket_ioctl; ++ BIO_write; ++ BN_CTX_free; ++ BN_CTX_new; ++ BN_MONT_CTX_free; ++ BN_MONT_CTX_new; ++ BN_MONT_CTX_set; ++ BN_add; ++ BN_add_word; ++ BN_hex2bn; ++ BN_bin2bn; ++ BN_bn2hex; ++ BN_bn2bin; ++ BN_clear; ++ BN_clear_bit; ++ BN_clear_free; ++ BN_cmp; ++ BN_copy; ++ BN_div; ++ BN_div_word; ++ BN_dup; ++ BN_free; ++ BN_from_montgomery; ++ BN_gcd; ++ BN_generate_prime; ++ BN_get_word; ++ BN_is_bit_set; ++ BN_is_prime; ++ BN_lshift; ++ BN_lshift1; ++ BN_mask_bits; ++ BN_mod; ++ BN_mod_exp; ++ BN_mod_exp_mont; ++ BN_mod_exp_simple; ++ BN_mod_inverse; ++ BN_mod_mul; ++ BN_mod_mul_montgomery; ++ BN_mod_word; ++ BN_mul; ++ BN_new; ++ BN_num_bits; ++ BN_num_bits_word; ++ BN_options; ++ BN_print; ++ BN_print_fp; ++ BN_rand; ++ BN_reciprocal; ++ BN_rshift; ++ BN_rshift1; ++ BN_set_bit; ++ BN_set_word; ++ BN_sqr; ++ BN_sub; ++ BN_to_ASN1_INTEGER; ++ BN_ucmp; ++ BN_value_one; ++ BUF_MEM_free; ++ BUF_MEM_grow; ++ BUF_MEM_new; ++ BUF_strdup; ++ CONF_free; ++ CONF_get_number; ++ CONF_get_section; ++ CONF_get_string; ++ CONF_load; ++ CRYPTO_add_lock; ++ CRYPTO_dbg_free; ++ CRYPTO_dbg_malloc; ++ CRYPTO_dbg_realloc; ++ CRYPTO_dbg_remalloc; ++ CRYPTO_free; ++ CRYPTO_get_add_lock_callback; ++ CRYPTO_get_id_callback; ++ CRYPTO_get_lock_name; ++ CRYPTO_get_locking_callback; ++ CRYPTO_get_mem_functions; ++ CRYPTO_lock; ++ CRYPTO_malloc; ++ CRYPTO_mem_ctrl; ++ CRYPTO_mem_leaks; ++ CRYPTO_mem_leaks_cb; ++ CRYPTO_mem_leaks_fp; ++ CRYPTO_realloc; ++ CRYPTO_remalloc; ++ CRYPTO_set_add_lock_callback; ++ CRYPTO_set_id_callback; ++ CRYPTO_set_locking_callback; ++ CRYPTO_set_mem_functions; ++ CRYPTO_thread_id; ++ DH_check; ++ DH_compute_key; ++ DH_free; ++ DH_generate_key; ++ DH_generate_parameters; ++ DH_new; ++ DH_size; ++ DHparams_print; ++ DHparams_print_fp; ++ DSA_free; ++ DSA_generate_key; ++ DSA_generate_parameters; ++ DSA_is_prime; ++ DSA_new; ++ DSA_print; ++ DSA_print_fp; ++ DSA_sign; ++ DSA_sign_setup; ++ DSA_size; ++ DSA_verify; ++ DSAparams_print; ++ DSAparams_print_fp; ++ ERR_clear_error; ++ ERR_error_string; ++ ERR_free_strings; ++ ERR_func_error_string; ++ ERR_get_err_state_table; ++ ERR_get_error; ++ ERR_get_error_line; ++ ERR_get_state; ++ ERR_get_string_table; ++ ERR_lib_error_string; ++ ERR_load_ASN1_strings; ++ ERR_load_BIO_strings; ++ ERR_load_BN_strings; ++ ERR_load_BUF_strings; ++ ERR_load_CONF_strings; ++ ERR_load_DH_strings; ++ ERR_load_DSA_strings; ++ ERR_load_ERR_strings; ++ ERR_load_EVP_strings; ++ ERR_load_OBJ_strings; ++ ERR_load_PEM_strings; ++ ERR_load_PROXY_strings; ++ ERR_load_RSA_strings; ++ ERR_load_X509_strings; ++ ERR_load_crypto_strings; ++ ERR_load_strings; ++ ERR_peek_error; ++ ERR_peek_error_line; ++ ERR_print_errors; ++ ERR_print_errors_fp; ++ ERR_put_error; ++ ERR_reason_error_string; ++ ERR_remove_state; ++ EVP_BytesToKey; ++ EVP_CIPHER_CTX_cleanup; ++ EVP_CipherFinal; ++ EVP_CipherInit; ++ EVP_CipherUpdate; ++ EVP_DecodeBlock; ++ EVP_DecodeFinal; ++ EVP_DecodeInit; ++ EVP_DecodeUpdate; ++ EVP_DecryptFinal; ++ EVP_DecryptInit; ++ EVP_DecryptUpdate; ++ EVP_DigestFinal; ++ EVP_DigestInit; ++ EVP_DigestUpdate; ++ EVP_EncodeBlock; ++ EVP_EncodeFinal; ++ EVP_EncodeInit; ++ EVP_EncodeUpdate; ++ EVP_EncryptFinal; ++ EVP_EncryptInit; ++ EVP_EncryptUpdate; ++ EVP_OpenFinal; ++ EVP_OpenInit; ++ EVP_PKEY_assign; ++ EVP_PKEY_copy_parameters; ++ EVP_PKEY_free; ++ EVP_PKEY_missing_parameters; ++ EVP_PKEY_new; ++ EVP_PKEY_save_parameters; ++ EVP_PKEY_size; ++ EVP_PKEY_type; ++ EVP_SealFinal; ++ EVP_SealInit; ++ EVP_SignFinal; ++ EVP_VerifyFinal; ++ EVP_add_alias; ++ EVP_add_cipher; ++ EVP_add_digest; ++ EVP_bf_cbc; ++ EVP_bf_cfb64; ++ EVP_bf_ecb; ++ EVP_bf_ofb; ++ EVP_cleanup; ++ EVP_des_cbc; ++ EVP_des_cfb64; ++ EVP_des_ecb; ++ EVP_des_ede; ++ EVP_des_ede3; ++ EVP_des_ede3_cbc; ++ EVP_des_ede3_cfb64; ++ EVP_des_ede3_ofb; ++ EVP_des_ede_cbc; ++ EVP_des_ede_cfb64; ++ EVP_des_ede_ofb; ++ EVP_des_ofb; ++ EVP_desx_cbc; ++ EVP_dss; ++ EVP_dss1; ++ EVP_enc_null; ++ EVP_get_cipherbyname; ++ EVP_get_digestbyname; ++ EVP_get_pw_prompt; ++ EVP_idea_cbc; ++ EVP_idea_cfb64; ++ EVP_idea_ecb; ++ EVP_idea_ofb; ++ EVP_md2; ++ EVP_md5; ++ EVP_md_null; ++ EVP_rc2_cbc; ++ EVP_rc2_cfb64; ++ EVP_rc2_ecb; ++ EVP_rc2_ofb; ++ EVP_rc4; ++ EVP_read_pw_string; ++ EVP_set_pw_prompt; ++ EVP_sha; ++ EVP_sha1; ++ MD2; ++ MD2_Final; ++ MD2_Init; ++ MD2_Update; ++ MD2_options; ++ MD5; ++ MD5_Final; ++ MD5_Init; ++ MD5_Update; ++ MDC2; ++ MDC2_Final; ++ MDC2_Init; ++ MDC2_Update; ++ NETSCAPE_SPKAC_free; ++ NETSCAPE_SPKAC_new; ++ NETSCAPE_SPKI_free; ++ NETSCAPE_SPKI_new; ++ NETSCAPE_SPKI_sign; ++ NETSCAPE_SPKI_verify; ++ OBJ_add_object; ++ OBJ_bsearch; ++ OBJ_cleanup; ++ OBJ_cmp; ++ OBJ_create; ++ OBJ_dup; ++ OBJ_ln2nid; ++ OBJ_new_nid; ++ OBJ_nid2ln; ++ OBJ_nid2obj; ++ OBJ_nid2sn; ++ OBJ_obj2nid; ++ OBJ_sn2nid; ++ OBJ_txt2nid; ++ PEM_ASN1_read; ++ PEM_ASN1_read_bio; ++ PEM_ASN1_write; ++ PEM_ASN1_write_bio; ++ PEM_SealFinal; ++ PEM_SealInit; ++ PEM_SealUpdate; ++ PEM_SignFinal; ++ PEM_SignInit; ++ PEM_SignUpdate; ++ PEM_X509_INFO_read; ++ PEM_X509_INFO_read_bio; ++ PEM_X509_INFO_write_bio; ++ PEM_dek_info; ++ PEM_do_header; ++ PEM_get_EVP_CIPHER_INFO; ++ PEM_proc_type; ++ PEM_read; ++ PEM_read_DHparams; ++ PEM_read_DSAPrivateKey; ++ PEM_read_DSAparams; ++ PEM_read_PKCS7; ++ PEM_read_PrivateKey; ++ PEM_read_RSAPrivateKey; ++ PEM_read_X509; ++ PEM_read_X509_CRL; ++ PEM_read_X509_REQ; ++ PEM_read_bio; ++ PEM_read_bio_DHparams; ++ PEM_read_bio_DSAPrivateKey; ++ PEM_read_bio_DSAparams; ++ PEM_read_bio_PKCS7; ++ PEM_read_bio_PrivateKey; ++ PEM_read_bio_RSAPrivateKey; ++ PEM_read_bio_X509; ++ PEM_read_bio_X509_CRL; ++ PEM_read_bio_X509_REQ; ++ PEM_write; ++ PEM_write_DHparams; ++ PEM_write_DSAPrivateKey; ++ PEM_write_DSAparams; ++ PEM_write_PKCS7; ++ PEM_write_PrivateKey; ++ PEM_write_RSAPrivateKey; ++ PEM_write_X509; ++ PEM_write_X509_CRL; ++ PEM_write_X509_REQ; ++ PEM_write_bio; ++ PEM_write_bio_DHparams; ++ PEM_write_bio_DSAPrivateKey; ++ PEM_write_bio_DSAparams; ++ PEM_write_bio_PKCS7; ++ PEM_write_bio_PrivateKey; ++ PEM_write_bio_RSAPrivateKey; ++ PEM_write_bio_X509; ++ PEM_write_bio_X509_CRL; ++ PEM_write_bio_X509_REQ; ++ PKCS7_DIGEST_free; ++ PKCS7_DIGEST_new; ++ PKCS7_ENCRYPT_free; ++ PKCS7_ENCRYPT_new; ++ PKCS7_ENC_CONTENT_free; ++ PKCS7_ENC_CONTENT_new; ++ PKCS7_ENVELOPE_free; ++ PKCS7_ENVELOPE_new; ++ PKCS7_ISSUER_AND_SERIAL_digest; ++ PKCS7_ISSUER_AND_SERIAL_free; ++ PKCS7_ISSUER_AND_SERIAL_new; ++ PKCS7_RECIP_INFO_free; ++ PKCS7_RECIP_INFO_new; ++ PKCS7_SIGNED_free; ++ PKCS7_SIGNED_new; ++ PKCS7_SIGNER_INFO_free; ++ PKCS7_SIGNER_INFO_new; ++ PKCS7_SIGN_ENVELOPE_free; ++ PKCS7_SIGN_ENVELOPE_new; ++ PKCS7_dup; ++ PKCS7_free; ++ PKCS7_new; ++ PROXY_ENTRY_add_noproxy; ++ PROXY_ENTRY_clear_noproxy; ++ PROXY_ENTRY_free; ++ PROXY_ENTRY_get_noproxy; ++ PROXY_ENTRY_new; ++ PROXY_ENTRY_set_server; ++ PROXY_add_noproxy; ++ PROXY_add_server; ++ PROXY_check_by_host; ++ PROXY_check_url; ++ PROXY_clear_noproxy; ++ PROXY_free; ++ PROXY_get_noproxy; ++ PROXY_get_proxies; ++ PROXY_get_proxy_entry; ++ PROXY_load_conf; ++ PROXY_new; ++ PROXY_print; ++ RAND_bytes; ++ RAND_cleanup; ++ RAND_file_name; ++ RAND_load_file; ++ RAND_screen; ++ RAND_seed; ++ RAND_write_file; ++ RC2_cbc_encrypt; ++ RC2_cfb64_encrypt; ++ RC2_ecb_encrypt; ++ RC2_encrypt; ++ RC2_ofb64_encrypt; ++ RC2_set_key; ++ RC4; ++ RC4_options; ++ RC4_set_key; ++ RSAPrivateKey_asn1_meth; ++ RSAPrivateKey_dup; ++ RSAPublicKey_dup; ++ RSA_PKCS1_SSLeay; ++ RSA_free; ++ RSA_generate_key; ++ RSA_new; ++ RSA_new_method; ++ RSA_print; ++ RSA_print_fp; ++ RSA_private_decrypt; ++ RSA_private_encrypt; ++ RSA_public_decrypt; ++ RSA_public_encrypt; ++ RSA_set_default_method; ++ RSA_sign; ++ RSA_sign_ASN1_OCTET_STRING; ++ RSA_size; ++ RSA_verify; ++ RSA_verify_ASN1_OCTET_STRING; ++ SHA; ++ SHA1; ++ SHA1_Final; ++ SHA1_Init; ++ SHA1_Update; ++ SHA_Final; ++ SHA_Init; ++ SHA_Update; ++ OpenSSL_add_all_algorithms; ++ OpenSSL_add_all_ciphers; ++ OpenSSL_add_all_digests; ++ TXT_DB_create_index; ++ TXT_DB_free; ++ TXT_DB_get_by_index; ++ TXT_DB_insert; ++ TXT_DB_read; ++ TXT_DB_write; ++ X509_ALGOR_free; ++ X509_ALGOR_new; ++ X509_ATTRIBUTE_free; ++ X509_ATTRIBUTE_new; ++ X509_CINF_free; ++ X509_CINF_new; ++ X509_CRL_INFO_free; ++ X509_CRL_INFO_new; ++ X509_CRL_add_ext; ++ X509_CRL_cmp; ++ X509_CRL_delete_ext; ++ X509_CRL_dup; ++ X509_CRL_free; ++ X509_CRL_get_ext; ++ X509_CRL_get_ext_by_NID; ++ X509_CRL_get_ext_by_OBJ; ++ X509_CRL_get_ext_by_critical; ++ X509_CRL_get_ext_count; ++ X509_CRL_new; ++ X509_CRL_sign; ++ X509_CRL_verify; ++ X509_EXTENSION_create_by_NID; ++ X509_EXTENSION_create_by_OBJ; ++ X509_EXTENSION_dup; ++ X509_EXTENSION_free; ++ X509_EXTENSION_get_critical; ++ X509_EXTENSION_get_data; ++ X509_EXTENSION_get_object; ++ X509_EXTENSION_new; ++ X509_EXTENSION_set_critical; ++ X509_EXTENSION_set_data; ++ X509_EXTENSION_set_object; ++ X509_INFO_free; ++ X509_INFO_new; ++ X509_LOOKUP_by_alias; ++ X509_LOOKUP_by_fingerprint; ++ X509_LOOKUP_by_issuer_serial; ++ X509_LOOKUP_by_subject; ++ X509_LOOKUP_ctrl; ++ X509_LOOKUP_file; ++ X509_LOOKUP_free; ++ X509_LOOKUP_hash_dir; ++ X509_LOOKUP_init; ++ X509_LOOKUP_new; ++ X509_LOOKUP_shutdown; ++ X509_NAME_ENTRY_create_by_NID; ++ X509_NAME_ENTRY_create_by_OBJ; ++ X509_NAME_ENTRY_dup; ++ X509_NAME_ENTRY_free; ++ X509_NAME_ENTRY_get_data; ++ X509_NAME_ENTRY_get_object; ++ X509_NAME_ENTRY_new; ++ X509_NAME_ENTRY_set_data; ++ X509_NAME_ENTRY_set_object; ++ X509_NAME_add_entry; ++ X509_NAME_cmp; ++ X509_NAME_delete_entry; ++ X509_NAME_digest; ++ X509_NAME_dup; ++ X509_NAME_entry_count; ++ X509_NAME_free; ++ X509_NAME_get_entry; ++ X509_NAME_get_index_by_NID; ++ X509_NAME_get_index_by_OBJ; ++ X509_NAME_get_text_by_NID; ++ X509_NAME_get_text_by_OBJ; ++ X509_NAME_hash; ++ X509_NAME_new; ++ X509_NAME_oneline; ++ X509_NAME_print; ++ X509_NAME_set; ++ X509_OBJECT_free_contents; ++ X509_OBJECT_retrieve_by_subject; ++ X509_OBJECT_up_ref_count; ++ X509_PKEY_free; ++ X509_PKEY_new; ++ X509_PUBKEY_free; ++ X509_PUBKEY_get; ++ X509_PUBKEY_new; ++ X509_PUBKEY_set; ++ X509_REQ_INFO_free; ++ X509_REQ_INFO_new; ++ X509_REQ_dup; ++ X509_REQ_free; ++ X509_REQ_get_pubkey; ++ X509_REQ_new; ++ X509_REQ_print; ++ X509_REQ_print_fp; ++ X509_REQ_set_pubkey; ++ X509_REQ_set_subject_name; ++ X509_REQ_set_version; ++ X509_REQ_sign; ++ X509_REQ_to_X509; ++ X509_REQ_verify; ++ X509_REVOKED_add_ext; ++ X509_REVOKED_delete_ext; ++ X509_REVOKED_free; ++ X509_REVOKED_get_ext; ++ X509_REVOKED_get_ext_by_NID; ++ X509_REVOKED_get_ext_by_OBJ; ++ X509_REVOKED_get_ext_by_critical; ++ X509_REVOKED_get_ext_by_critic; ++ X509_REVOKED_get_ext_count; ++ X509_REVOKED_new; ++ X509_SIG_free; ++ X509_SIG_new; ++ X509_STORE_CTX_cleanup; ++ X509_STORE_CTX_init; ++ X509_STORE_add_cert; ++ X509_STORE_add_lookup; ++ X509_STORE_free; ++ X509_STORE_get_by_subject; ++ X509_STORE_load_locations; ++ X509_STORE_new; ++ X509_STORE_set_default_paths; ++ X509_VAL_free; ++ X509_VAL_new; ++ X509_add_ext; ++ X509_asn1_meth; ++ X509_certificate_type; ++ X509_check_private_key; ++ X509_cmp_current_time; ++ X509_delete_ext; ++ X509_digest; ++ X509_dup; ++ X509_free; ++ X509_get_default_cert_area; ++ X509_get_default_cert_dir; ++ X509_get_default_cert_dir_env; ++ X509_get_default_cert_file; ++ X509_get_default_cert_file_env; ++ X509_get_default_private_dir; ++ X509_get_ext; ++ X509_get_ext_by_NID; ++ X509_get_ext_by_OBJ; ++ X509_get_ext_by_critical; ++ X509_get_ext_count; ++ X509_get_issuer_name; ++ X509_get_pubkey; ++ X509_get_pubkey_parameters; ++ X509_get_serialNumber; ++ X509_get_subject_name; ++ X509_gmtime_adj; ++ X509_issuer_and_serial_cmp; ++ X509_issuer_and_serial_hash; ++ X509_issuer_name_cmp; ++ X509_issuer_name_hash; ++ X509_load_cert_file; ++ X509_new; ++ X509_print; ++ X509_print_fp; ++ X509_set_issuer_name; ++ X509_set_notAfter; ++ X509_set_notBefore; ++ X509_set_pubkey; ++ X509_set_serialNumber; ++ X509_set_subject_name; ++ X509_set_version; ++ X509_sign; ++ X509_subject_name_cmp; ++ X509_subject_name_hash; ++ X509_to_X509_REQ; ++ X509_verify; ++ X509_verify_cert; ++ X509_verify_cert_error_string; ++ X509v3_add_ext; ++ X509v3_add_extension; ++ X509v3_add_netscape_extensions; ++ X509v3_add_standard_extensions; ++ X509v3_cleanup_extensions; ++ X509v3_data_type_by_NID; ++ X509v3_data_type_by_OBJ; ++ X509v3_delete_ext; ++ X509v3_get_ext; ++ X509v3_get_ext_by_NID; ++ X509v3_get_ext_by_OBJ; ++ X509v3_get_ext_by_critical; ++ X509v3_get_ext_count; ++ X509v3_pack_string; ++ X509v3_pack_type_by_NID; ++ X509v3_pack_type_by_OBJ; ++ X509v3_unpack_string; ++ _des_crypt; ++ a2d_ASN1_OBJECT; ++ a2i_ASN1_INTEGER; ++ a2i_ASN1_STRING; ++ asn1_Finish; ++ asn1_GetSequence; ++ bn_div_words; ++ bn_expand2; ++ bn_mul_add_words; ++ bn_mul_words; ++ BN_uadd; ++ BN_usub; ++ bn_sqr_words; ++ _ossl_old_crypt; ++ d2i_ASN1_BIT_STRING; ++ d2i_ASN1_BOOLEAN; ++ d2i_ASN1_HEADER; ++ d2i_ASN1_IA5STRING; ++ d2i_ASN1_INTEGER; ++ d2i_ASN1_OBJECT; ++ d2i_ASN1_OCTET_STRING; ++ d2i_ASN1_PRINTABLE; ++ d2i_ASN1_PRINTABLESTRING; ++ d2i_ASN1_SET; ++ d2i_ASN1_T61STRING; ++ d2i_ASN1_TYPE; ++ d2i_ASN1_UTCTIME; ++ d2i_ASN1_bytes; ++ d2i_ASN1_type_bytes; ++ d2i_DHparams; ++ d2i_DSAPrivateKey; ++ d2i_DSAPrivateKey_bio; ++ d2i_DSAPrivateKey_fp; ++ d2i_DSAPublicKey; ++ d2i_DSAparams; ++ d2i_NETSCAPE_SPKAC; ++ d2i_NETSCAPE_SPKI; ++ d2i_Netscape_RSA; ++ d2i_PKCS7; ++ d2i_PKCS7_DIGEST; ++ d2i_PKCS7_ENCRYPT; ++ d2i_PKCS7_ENC_CONTENT; ++ d2i_PKCS7_ENVELOPE; ++ d2i_PKCS7_ISSUER_AND_SERIAL; ++ d2i_PKCS7_RECIP_INFO; ++ d2i_PKCS7_SIGNED; ++ d2i_PKCS7_SIGNER_INFO; ++ d2i_PKCS7_SIGN_ENVELOPE; ++ d2i_PKCS7_bio; ++ d2i_PKCS7_fp; ++ d2i_PrivateKey; ++ d2i_PublicKey; ++ d2i_RSAPrivateKey; ++ d2i_RSAPrivateKey_bio; ++ d2i_RSAPrivateKey_fp; ++ d2i_RSAPublicKey; ++ d2i_X509; ++ d2i_X509_ALGOR; ++ d2i_X509_ATTRIBUTE; ++ d2i_X509_CINF; ++ d2i_X509_CRL; ++ d2i_X509_CRL_INFO; ++ d2i_X509_CRL_bio; ++ d2i_X509_CRL_fp; ++ d2i_X509_EXTENSION; ++ d2i_X509_NAME; ++ d2i_X509_NAME_ENTRY; ++ d2i_X509_PKEY; ++ d2i_X509_PUBKEY; ++ d2i_X509_REQ; ++ d2i_X509_REQ_INFO; ++ d2i_X509_REQ_bio; ++ d2i_X509_REQ_fp; ++ d2i_X509_REVOKED; ++ d2i_X509_SIG; ++ d2i_X509_VAL; ++ d2i_X509_bio; ++ d2i_X509_fp; ++ DES_cbc_cksum; ++ DES_cbc_encrypt; ++ DES_cblock_print_file; ++ DES_cfb64_encrypt; ++ DES_cfb_encrypt; ++ DES_decrypt3; ++ DES_ecb3_encrypt; ++ DES_ecb_encrypt; ++ DES_ede3_cbc_encrypt; ++ DES_ede3_cfb64_encrypt; ++ DES_ede3_ofb64_encrypt; ++ DES_enc_read; ++ DES_enc_write; ++ DES_encrypt1; ++ DES_encrypt2; ++ DES_encrypt3; ++ DES_fcrypt; ++ DES_is_weak_key; ++ DES_key_sched; ++ DES_ncbc_encrypt; ++ DES_ofb64_encrypt; ++ DES_ofb_encrypt; ++ DES_options; ++ DES_pcbc_encrypt; ++ DES_quad_cksum; ++ DES_random_key; ++ _ossl_old_des_random_seed; ++ _ossl_old_des_read_2passwords; ++ _ossl_old_des_read_password; ++ _ossl_old_des_read_pw; ++ _ossl_old_des_read_pw_string; ++ DES_set_key; ++ DES_set_odd_parity; ++ DES_string_to_2keys; ++ DES_string_to_key; ++ DES_xcbc_encrypt; ++ DES_xwhite_in2out; ++ fcrypt_body; ++ i2a_ASN1_INTEGER; ++ i2a_ASN1_OBJECT; ++ i2a_ASN1_STRING; ++ i2d_ASN1_BIT_STRING; ++ i2d_ASN1_BOOLEAN; ++ i2d_ASN1_HEADER; ++ i2d_ASN1_IA5STRING; ++ i2d_ASN1_INTEGER; ++ i2d_ASN1_OBJECT; ++ i2d_ASN1_OCTET_STRING; ++ i2d_ASN1_PRINTABLE; ++ i2d_ASN1_SET; ++ i2d_ASN1_TYPE; ++ i2d_ASN1_UTCTIME; ++ i2d_ASN1_bytes; ++ i2d_DHparams; ++ i2d_DSAPrivateKey; ++ i2d_DSAPrivateKey_bio; ++ i2d_DSAPrivateKey_fp; ++ i2d_DSAPublicKey; ++ i2d_DSAparams; ++ i2d_NETSCAPE_SPKAC; ++ i2d_NETSCAPE_SPKI; ++ i2d_Netscape_RSA; ++ i2d_PKCS7; ++ i2d_PKCS7_DIGEST; ++ i2d_PKCS7_ENCRYPT; ++ i2d_PKCS7_ENC_CONTENT; ++ i2d_PKCS7_ENVELOPE; ++ i2d_PKCS7_ISSUER_AND_SERIAL; ++ i2d_PKCS7_RECIP_INFO; ++ i2d_PKCS7_SIGNED; ++ i2d_PKCS7_SIGNER_INFO; ++ i2d_PKCS7_SIGN_ENVELOPE; ++ i2d_PKCS7_bio; ++ i2d_PKCS7_fp; ++ i2d_PrivateKey; ++ i2d_PublicKey; ++ i2d_RSAPrivateKey; ++ i2d_RSAPrivateKey_bio; ++ i2d_RSAPrivateKey_fp; ++ i2d_RSAPublicKey; ++ i2d_X509; ++ i2d_X509_ALGOR; ++ i2d_X509_ATTRIBUTE; ++ i2d_X509_CINF; ++ i2d_X509_CRL; ++ i2d_X509_CRL_INFO; ++ i2d_X509_CRL_bio; ++ i2d_X509_CRL_fp; ++ i2d_X509_EXTENSION; ++ i2d_X509_NAME; ++ i2d_X509_NAME_ENTRY; ++ i2d_X509_PKEY; ++ i2d_X509_PUBKEY; ++ i2d_X509_REQ; ++ i2d_X509_REQ_INFO; ++ i2d_X509_REQ_bio; ++ i2d_X509_REQ_fp; ++ i2d_X509_REVOKED; ++ i2d_X509_SIG; ++ i2d_X509_VAL; ++ i2d_X509_bio; ++ i2d_X509_fp; ++ idea_cbc_encrypt; ++ idea_cfb64_encrypt; ++ idea_ecb_encrypt; ++ idea_encrypt; ++ idea_ofb64_encrypt; ++ idea_options; ++ idea_set_decrypt_key; ++ idea_set_encrypt_key; ++ lh_delete; ++ lh_doall; ++ lh_doall_arg; ++ lh_free; ++ lh_insert; ++ lh_new; ++ lh_node_stats; ++ lh_node_stats_bio; ++ lh_node_usage_stats; ++ lh_node_usage_stats_bio; ++ lh_retrieve; ++ lh_stats; ++ lh_stats_bio; ++ lh_strhash; ++ sk_delete; ++ sk_delete_ptr; ++ sk_dup; ++ sk_find; ++ sk_free; ++ sk_insert; ++ sk_new; ++ sk_pop; ++ sk_pop_free; ++ sk_push; ++ sk_set_cmp_func; ++ sk_shift; ++ sk_unshift; ++ sk_zero; ++ BIO_f_nbio_test; ++ ASN1_TYPE_get; ++ ASN1_TYPE_set; ++ PKCS7_content_free; ++ ERR_load_PKCS7_strings; ++ X509_find_by_issuer_and_serial; ++ X509_find_by_subject; ++ PKCS7_ctrl; ++ PKCS7_set_type; ++ PKCS7_set_content; ++ PKCS7_SIGNER_INFO_set; ++ PKCS7_add_signer; ++ PKCS7_add_certificate; ++ PKCS7_add_crl; ++ PKCS7_content_new; ++ PKCS7_dataSign; ++ PKCS7_dataVerify; ++ PKCS7_dataInit; ++ PKCS7_add_signature; ++ PKCS7_cert_from_signer_info; ++ PKCS7_get_signer_info; ++ EVP_delete_alias; ++ EVP_mdc2; ++ PEM_read_bio_RSAPublicKey; ++ PEM_write_bio_RSAPublicKey; ++ d2i_RSAPublicKey_bio; ++ i2d_RSAPublicKey_bio; ++ PEM_read_RSAPublicKey; ++ PEM_write_RSAPublicKey; ++ d2i_RSAPublicKey_fp; ++ i2d_RSAPublicKey_fp; ++ BIO_copy_next_retry; ++ RSA_flags; ++ X509_STORE_add_crl; ++ X509_load_crl_file; ++ EVP_rc2_40_cbc; ++ EVP_rc4_40; ++ EVP_CIPHER_CTX_init; ++ HMAC; ++ HMAC_Init; ++ HMAC_Update; ++ HMAC_Final; ++ ERR_get_next_error_library; ++ EVP_PKEY_cmp_parameters; ++ HMAC_cleanup; ++ BIO_ptr_ctrl; ++ BIO_new_file_internal; ++ BIO_new_fp_internal; ++ BIO_s_file_internal; ++ BN_BLINDING_convert; ++ BN_BLINDING_invert; ++ BN_BLINDING_update; ++ RSA_blinding_on; ++ RSA_blinding_off; ++ i2t_ASN1_OBJECT; ++ BN_BLINDING_new; ++ BN_BLINDING_free; ++ EVP_cast5_cbc; ++ EVP_cast5_cfb64; ++ EVP_cast5_ecb; ++ EVP_cast5_ofb; ++ BF_decrypt; ++ CAST_set_key; ++ CAST_encrypt; ++ CAST_decrypt; ++ CAST_ecb_encrypt; ++ CAST_cbc_encrypt; ++ CAST_cfb64_encrypt; ++ CAST_ofb64_encrypt; ++ RC2_decrypt; ++ OBJ_create_objects; ++ BN_exp; ++ BN_mul_word; ++ BN_sub_word; ++ BN_dec2bn; ++ BN_bn2dec; ++ BIO_ghbn_ctrl; ++ CRYPTO_free_ex_data; ++ CRYPTO_get_ex_data; ++ CRYPTO_set_ex_data; ++ ERR_load_CRYPTO_strings; ++ ERR_load_CRYPTOlib_strings; ++ EVP_PKEY_bits; ++ MD5_Transform; ++ SHA1_Transform; ++ SHA_Transform; ++ X509_STORE_CTX_get_chain; ++ X509_STORE_CTX_get_current_cert; ++ X509_STORE_CTX_get_error; ++ X509_STORE_CTX_get_error_depth; ++ X509_STORE_CTX_get_ex_data; ++ X509_STORE_CTX_set_cert; ++ X509_STORE_CTX_set_chain; ++ X509_STORE_CTX_set_error; ++ X509_STORE_CTX_set_ex_data; ++ CRYPTO_dup_ex_data; ++ CRYPTO_get_new_lockid; ++ CRYPTO_new_ex_data; ++ RSA_set_ex_data; ++ RSA_get_ex_data; ++ RSA_get_ex_new_index; ++ RSA_padding_add_PKCS1_type_1; ++ RSA_padding_add_PKCS1_type_2; ++ RSA_padding_add_SSLv23; ++ RSA_padding_add_none; ++ RSA_padding_check_PKCS1_type_1; ++ RSA_padding_check_PKCS1_type_2; ++ RSA_padding_check_SSLv23; ++ RSA_padding_check_none; ++ bn_add_words; ++ d2i_Netscape_RSA_2; ++ CRYPTO_get_ex_new_index; ++ RIPEMD160_Init; ++ RIPEMD160_Update; ++ RIPEMD160_Final; ++ RIPEMD160; ++ RIPEMD160_Transform; ++ RC5_32_set_key; ++ RC5_32_ecb_encrypt; ++ RC5_32_encrypt; ++ RC5_32_decrypt; ++ RC5_32_cbc_encrypt; ++ RC5_32_cfb64_encrypt; ++ RC5_32_ofb64_encrypt; ++ BN_bn2mpi; ++ BN_mpi2bn; ++ ASN1_BIT_STRING_get_bit; ++ ASN1_BIT_STRING_set_bit; ++ BIO_get_ex_data; ++ BIO_get_ex_new_index; ++ BIO_set_ex_data; ++ X509v3_get_key_usage; ++ X509v3_set_key_usage; ++ a2i_X509v3_key_usage; ++ i2a_X509v3_key_usage; ++ EVP_PKEY_decrypt; ++ EVP_PKEY_encrypt; ++ PKCS7_RECIP_INFO_set; ++ PKCS7_add_recipient; ++ PKCS7_add_recipient_info; ++ PKCS7_set_cipher; ++ ASN1_TYPE_get_int_octetstring; ++ ASN1_TYPE_get_octetstring; ++ ASN1_TYPE_set_int_octetstring; ++ ASN1_TYPE_set_octetstring; ++ ASN1_UTCTIME_set_string; ++ ERR_add_error_data; ++ ERR_set_error_data; ++ EVP_CIPHER_asn1_to_param; ++ EVP_CIPHER_param_to_asn1; ++ EVP_CIPHER_get_asn1_iv; ++ EVP_CIPHER_set_asn1_iv; ++ EVP_rc5_32_12_16_cbc; ++ EVP_rc5_32_12_16_cfb64; ++ EVP_rc5_32_12_16_ecb; ++ EVP_rc5_32_12_16_ofb; ++ asn1_add_error; ++ d2i_ASN1_BMPSTRING; ++ i2d_ASN1_BMPSTRING; ++ BIO_f_ber; ++ BN_init; ++ COMP_CTX_new; ++ COMP_CTX_free; ++ COMP_CTX_compress_block; ++ COMP_CTX_expand_block; ++ X509_STORE_CTX_get_ex_new_index; ++ OBJ_NAME_add; ++ BIO_socket_nbio; ++ EVP_rc2_64_cbc; ++ OBJ_NAME_cleanup; ++ OBJ_NAME_get; ++ OBJ_NAME_init; ++ OBJ_NAME_new_index; ++ OBJ_NAME_remove; ++ BN_MONT_CTX_copy; ++ BIO_new_socks4a_connect; ++ BIO_s_socks4a_connect; ++ PROXY_set_connect_mode; ++ RAND_SSLeay; ++ RAND_set_rand_method; ++ RSA_memory_lock; ++ bn_sub_words; ++ bn_mul_normal; ++ bn_mul_comba8; ++ bn_mul_comba4; ++ bn_sqr_normal; ++ bn_sqr_comba8; ++ bn_sqr_comba4; ++ bn_cmp_words; ++ bn_mul_recursive; ++ bn_mul_part_recursive; ++ bn_sqr_recursive; ++ bn_mul_low_normal; ++ BN_RECP_CTX_init; ++ BN_RECP_CTX_new; ++ BN_RECP_CTX_free; ++ BN_RECP_CTX_set; ++ BN_mod_mul_reciprocal; ++ BN_mod_exp_recp; ++ BN_div_recp; ++ BN_CTX_init; ++ BN_MONT_CTX_init; ++ RAND_get_rand_method; ++ PKCS7_add_attribute; ++ PKCS7_add_signed_attribute; ++ PKCS7_digest_from_attributes; ++ PKCS7_get_attribute; ++ PKCS7_get_issuer_and_serial; ++ PKCS7_get_signed_attribute; ++ COMP_compress_block; ++ COMP_expand_block; ++ COMP_rle; ++ COMP_zlib; ++ ms_time_diff; ++ ms_time_new; ++ ms_time_free; ++ ms_time_cmp; ++ ms_time_get; ++ PKCS7_set_attributes; ++ PKCS7_set_signed_attributes; ++ X509_ATTRIBUTE_create; ++ X509_ATTRIBUTE_dup; ++ ASN1_GENERALIZEDTIME_check; ++ ASN1_GENERALIZEDTIME_print; ++ ASN1_GENERALIZEDTIME_set; ++ ASN1_GENERALIZEDTIME_set_string; ++ ASN1_TIME_print; ++ BASIC_CONSTRAINTS_free; ++ BASIC_CONSTRAINTS_new; ++ ERR_load_X509V3_strings; ++ NETSCAPE_CERT_SEQUENCE_free; ++ NETSCAPE_CERT_SEQUENCE_new; ++ OBJ_txt2obj; ++ PEM_read_NETSCAPE_CERT_SEQUENCE; ++ PEM_read_NS_CERT_SEQ; ++ PEM_read_bio_NETSCAPE_CERT_SEQUENCE; ++ PEM_read_bio_NS_CERT_SEQ; ++ PEM_write_NETSCAPE_CERT_SEQUENCE; ++ PEM_write_NS_CERT_SEQ; ++ PEM_write_bio_NETSCAPE_CERT_SEQUENCE; ++ PEM_write_bio_NS_CERT_SEQ; ++ X509V3_EXT_add; ++ X509V3_EXT_add_alias; ++ X509V3_EXT_add_conf; ++ X509V3_EXT_cleanup; ++ X509V3_EXT_conf; ++ X509V3_EXT_conf_nid; ++ X509V3_EXT_get; ++ X509V3_EXT_get_nid; ++ X509V3_EXT_print; ++ X509V3_EXT_print_fp; ++ X509V3_add_standard_extensions; ++ X509V3_add_value; ++ X509V3_add_value_bool; ++ X509V3_add_value_int; ++ X509V3_conf_free; ++ X509V3_get_value_bool; ++ X509V3_get_value_int; ++ X509V3_parse_list; ++ d2i_ASN1_GENERALIZEDTIME; ++ d2i_ASN1_TIME; ++ d2i_BASIC_CONSTRAINTS; ++ d2i_NETSCAPE_CERT_SEQUENCE; ++ d2i_ext_ku; ++ ext_ku_free; ++ ext_ku_new; ++ i2d_ASN1_GENERALIZEDTIME; ++ i2d_ASN1_TIME; ++ i2d_BASIC_CONSTRAINTS; ++ i2d_NETSCAPE_CERT_SEQUENCE; ++ i2d_ext_ku; ++ EVP_MD_CTX_copy; ++ i2d_ASN1_ENUMERATED; ++ d2i_ASN1_ENUMERATED; ++ ASN1_ENUMERATED_set; ++ ASN1_ENUMERATED_get; ++ BN_to_ASN1_ENUMERATED; ++ ASN1_ENUMERATED_to_BN; ++ i2a_ASN1_ENUMERATED; ++ a2i_ASN1_ENUMERATED; ++ i2d_GENERAL_NAME; ++ d2i_GENERAL_NAME; ++ GENERAL_NAME_new; ++ GENERAL_NAME_free; ++ GENERAL_NAMES_new; ++ GENERAL_NAMES_free; ++ d2i_GENERAL_NAMES; ++ i2d_GENERAL_NAMES; ++ i2v_GENERAL_NAMES; ++ i2s_ASN1_OCTET_STRING; ++ s2i_ASN1_OCTET_STRING; ++ X509V3_EXT_check_conf; ++ hex_to_string; ++ string_to_hex; ++ DES_ede3_cbcm_encrypt; ++ RSA_padding_add_PKCS1_OAEP; ++ RSA_padding_check_PKCS1_OAEP; ++ X509_CRL_print_fp; ++ X509_CRL_print; ++ i2v_GENERAL_NAME; ++ v2i_GENERAL_NAME; ++ i2d_PKEY_USAGE_PERIOD; ++ d2i_PKEY_USAGE_PERIOD; ++ PKEY_USAGE_PERIOD_new; ++ PKEY_USAGE_PERIOD_free; ++ v2i_GENERAL_NAMES; ++ i2s_ASN1_INTEGER; ++ X509V3_EXT_d2i; ++ name_cmp; ++ str_dup; ++ i2s_ASN1_ENUMERATED; ++ i2s_ASN1_ENUMERATED_TABLE; ++ BIO_s_log; ++ BIO_f_reliable; ++ PKCS7_dataFinal; ++ PKCS7_dataDecode; ++ X509V3_EXT_CRL_add_conf; ++ BN_set_params; ++ BN_get_params; ++ BIO_get_ex_num; ++ BIO_set_ex_free_func; ++ EVP_ripemd160; ++ ASN1_TIME_set; ++ i2d_AUTHORITY_KEYID; ++ d2i_AUTHORITY_KEYID; ++ AUTHORITY_KEYID_new; ++ AUTHORITY_KEYID_free; ++ ASN1_seq_unpack; ++ ASN1_seq_pack; ++ ASN1_unpack_string; ++ ASN1_pack_string; ++ PKCS12_pack_safebag; ++ PKCS12_MAKE_KEYBAG; ++ PKCS8_encrypt; ++ PKCS12_MAKE_SHKEYBAG; ++ PKCS12_pack_p7data; ++ PKCS12_pack_p7encdata; ++ PKCS12_add_localkeyid; ++ PKCS12_add_friendlyname_asc; ++ PKCS12_add_friendlyname_uni; ++ PKCS12_get_friendlyname; ++ PKCS12_pbe_crypt; ++ PKCS12_decrypt_d2i; ++ PKCS12_i2d_encrypt; ++ PKCS12_init; ++ PKCS12_key_gen_asc; ++ PKCS12_key_gen_uni; ++ PKCS12_gen_mac; ++ PKCS12_verify_mac; ++ PKCS12_set_mac; ++ PKCS12_setup_mac; ++ OPENSSL_asc2uni; ++ OPENSSL_uni2asc; ++ i2d_PKCS12_BAGS; ++ PKCS12_BAGS_new; ++ d2i_PKCS12_BAGS; ++ PKCS12_BAGS_free; ++ i2d_PKCS12; ++ d2i_PKCS12; ++ PKCS12_new; ++ PKCS12_free; ++ i2d_PKCS12_MAC_DATA; ++ PKCS12_MAC_DATA_new; ++ d2i_PKCS12_MAC_DATA; ++ PKCS12_MAC_DATA_free; ++ i2d_PKCS12_SAFEBAG; ++ PKCS12_SAFEBAG_new; ++ d2i_PKCS12_SAFEBAG; ++ PKCS12_SAFEBAG_free; ++ ERR_load_PKCS12_strings; ++ PKCS12_PBE_add; ++ PKCS8_add_keyusage; ++ PKCS12_get_attr_gen; ++ PKCS12_parse; ++ PKCS12_create; ++ i2d_PKCS12_bio; ++ i2d_PKCS12_fp; ++ d2i_PKCS12_bio; ++ d2i_PKCS12_fp; ++ i2d_PBEPARAM; ++ PBEPARAM_new; ++ d2i_PBEPARAM; ++ PBEPARAM_free; ++ i2d_PKCS8_PRIV_KEY_INFO; ++ PKCS8_PRIV_KEY_INFO_new; ++ d2i_PKCS8_PRIV_KEY_INFO; ++ PKCS8_PRIV_KEY_INFO_free; ++ EVP_PKCS82PKEY; ++ EVP_PKEY2PKCS8; ++ PKCS8_set_broken; ++ EVP_PBE_ALGOR_CipherInit; ++ EVP_PBE_alg_add; ++ PKCS5_pbe_set; ++ EVP_PBE_cleanup; ++ i2d_SXNET; ++ d2i_SXNET; ++ SXNET_new; ++ SXNET_free; ++ i2d_SXNETID; ++ d2i_SXNETID; ++ SXNETID_new; ++ SXNETID_free; ++ DSA_SIG_new; ++ DSA_SIG_free; ++ DSA_do_sign; ++ DSA_do_verify; ++ d2i_DSA_SIG; ++ i2d_DSA_SIG; ++ i2d_ASN1_VISIBLESTRING; ++ d2i_ASN1_VISIBLESTRING; ++ i2d_ASN1_UTF8STRING; ++ d2i_ASN1_UTF8STRING; ++ i2d_DIRECTORYSTRING; ++ d2i_DIRECTORYSTRING; ++ i2d_DISPLAYTEXT; ++ d2i_DISPLAYTEXT; ++ d2i_ASN1_SET_OF_X509; ++ i2d_ASN1_SET_OF_X509; ++ i2d_PBKDF2PARAM; ++ PBKDF2PARAM_new; ++ d2i_PBKDF2PARAM; ++ PBKDF2PARAM_free; ++ i2d_PBE2PARAM; ++ PBE2PARAM_new; ++ d2i_PBE2PARAM; ++ PBE2PARAM_free; ++ d2i_ASN1_SET_OF_GENERAL_NAME; ++ i2d_ASN1_SET_OF_GENERAL_NAME; ++ d2i_ASN1_SET_OF_SXNETID; ++ i2d_ASN1_SET_OF_SXNETID; ++ d2i_ASN1_SET_OF_POLICYQUALINFO; ++ i2d_ASN1_SET_OF_POLICYQUALINFO; ++ d2i_ASN1_SET_OF_POLICYINFO; ++ i2d_ASN1_SET_OF_POLICYINFO; ++ SXNET_add_id_asc; ++ SXNET_add_id_ulong; ++ SXNET_add_id_INTEGER; ++ SXNET_get_id_asc; ++ SXNET_get_id_ulong; ++ SXNET_get_id_INTEGER; ++ X509V3_set_conf_lhash; ++ i2d_CERTIFICATEPOLICIES; ++ CERTIFICATEPOLICIES_new; ++ CERTIFICATEPOLICIES_free; ++ d2i_CERTIFICATEPOLICIES; ++ i2d_POLICYINFO; ++ POLICYINFO_new; ++ d2i_POLICYINFO; ++ POLICYINFO_free; ++ i2d_POLICYQUALINFO; ++ POLICYQUALINFO_new; ++ d2i_POLICYQUALINFO; ++ POLICYQUALINFO_free; ++ i2d_USERNOTICE; ++ USERNOTICE_new; ++ d2i_USERNOTICE; ++ USERNOTICE_free; ++ i2d_NOTICEREF; ++ NOTICEREF_new; ++ d2i_NOTICEREF; ++ NOTICEREF_free; ++ X509V3_get_string; ++ X509V3_get_section; ++ X509V3_string_free; ++ X509V3_section_free; ++ X509V3_set_ctx; ++ s2i_ASN1_INTEGER; ++ CRYPTO_set_locked_mem_functions; ++ CRYPTO_get_locked_mem_functions; ++ CRYPTO_malloc_locked; ++ CRYPTO_free_locked; ++ BN_mod_exp2_mont; ++ ERR_get_error_line_data; ++ ERR_peek_error_line_data; ++ PKCS12_PBE_keyivgen; ++ X509_ALGOR_dup; ++ d2i_ASN1_SET_OF_DIST_POINT; ++ i2d_ASN1_SET_OF_DIST_POINT; ++ i2d_CRL_DIST_POINTS; ++ CRL_DIST_POINTS_new; ++ CRL_DIST_POINTS_free; ++ d2i_CRL_DIST_POINTS; ++ i2d_DIST_POINT; ++ DIST_POINT_new; ++ d2i_DIST_POINT; ++ DIST_POINT_free; ++ i2d_DIST_POINT_NAME; ++ DIST_POINT_NAME_new; ++ DIST_POINT_NAME_free; ++ d2i_DIST_POINT_NAME; ++ X509V3_add_value_uchar; ++ d2i_ASN1_SET_OF_X509_ATTRIBUTE; ++ i2d_ASN1_SET_OF_ASN1_TYPE; ++ d2i_ASN1_SET_OF_X509_EXTENSION; ++ d2i_ASN1_SET_OF_X509_NAME_ENTRY; ++ d2i_ASN1_SET_OF_ASN1_TYPE; ++ i2d_ASN1_SET_OF_X509_ATTRIBUTE; ++ i2d_ASN1_SET_OF_X509_EXTENSION; ++ i2d_ASN1_SET_OF_X509_NAME_ENTRY; ++ X509V3_EXT_i2d; ++ X509V3_EXT_val_prn; ++ X509V3_EXT_add_list; ++ EVP_CIPHER_type; ++ EVP_PBE_CipherInit; ++ X509V3_add_value_bool_nf; ++ d2i_ASN1_UINTEGER; ++ sk_value; ++ sk_num; ++ sk_set; ++ i2d_ASN1_SET_OF_X509_REVOKED; ++ sk_sort; ++ d2i_ASN1_SET_OF_X509_REVOKED; ++ i2d_ASN1_SET_OF_X509_ALGOR; ++ i2d_ASN1_SET_OF_X509_CRL; ++ d2i_ASN1_SET_OF_X509_ALGOR; ++ d2i_ASN1_SET_OF_X509_CRL; ++ i2d_ASN1_SET_OF_PKCS7_SIGNER_INFO; ++ i2d_ASN1_SET_OF_PKCS7_RECIP_INFO; ++ d2i_ASN1_SET_OF_PKCS7_SIGNER_INFO; ++ d2i_ASN1_SET_OF_PKCS7_RECIP_INFO; ++ PKCS5_PBE_add; ++ PEM_write_bio_PKCS8; ++ i2d_PKCS8_fp; ++ PEM_read_bio_PKCS8_PRIV_KEY_INFO; ++ PEM_read_bio_P8_PRIV_KEY_INFO; ++ d2i_PKCS8_bio; ++ d2i_PKCS8_PRIV_KEY_INFO_fp; ++ PEM_write_bio_PKCS8_PRIV_KEY_INFO; ++ PEM_write_bio_P8_PRIV_KEY_INFO; ++ PEM_read_PKCS8; ++ d2i_PKCS8_PRIV_KEY_INFO_bio; ++ d2i_PKCS8_fp; ++ PEM_write_PKCS8; ++ PEM_read_PKCS8_PRIV_KEY_INFO; ++ PEM_read_P8_PRIV_KEY_INFO; ++ PEM_read_bio_PKCS8; ++ PEM_write_PKCS8_PRIV_KEY_INFO; ++ PEM_write_P8_PRIV_KEY_INFO; ++ PKCS5_PBE_keyivgen; ++ i2d_PKCS8_bio; ++ i2d_PKCS8_PRIV_KEY_INFO_fp; ++ i2d_PKCS8_PRIV_KEY_INFO_bio; ++ BIO_s_bio; ++ PKCS5_pbe2_set; ++ PKCS5_PBKDF2_HMAC_SHA1; ++ PKCS5_v2_PBE_keyivgen; ++ PEM_write_bio_PKCS8PrivateKey; ++ PEM_write_PKCS8PrivateKey; ++ BIO_ctrl_get_read_request; ++ BIO_ctrl_pending; ++ BIO_ctrl_wpending; ++ BIO_new_bio_pair; ++ BIO_ctrl_get_write_guarantee; ++ CRYPTO_num_locks; ++ CONF_load_bio; ++ CONF_load_fp; ++ i2d_ASN1_SET_OF_ASN1_OBJECT; ++ d2i_ASN1_SET_OF_ASN1_OBJECT; ++ PKCS7_signatureVerify; ++ RSA_set_method; ++ RSA_get_method; ++ RSA_get_default_method; ++ RSA_check_key; ++ OBJ_obj2txt; ++ DSA_dup_DH; ++ X509_REQ_get_extensions; ++ X509_REQ_set_extension_nids; ++ BIO_nwrite; ++ X509_REQ_extension_nid; ++ BIO_nread; ++ X509_REQ_get_extension_nids; ++ BIO_nwrite0; ++ X509_REQ_add_extensions_nid; ++ BIO_nread0; ++ X509_REQ_add_extensions; ++ BIO_new_mem_buf; ++ DH_set_ex_data; ++ DH_set_method; ++ DSA_OpenSSL; ++ DH_get_ex_data; ++ DH_get_ex_new_index; ++ DSA_new_method; ++ DH_new_method; ++ DH_OpenSSL; ++ DSA_get_ex_new_index; ++ DH_get_default_method; ++ DSA_set_ex_data; ++ DH_set_default_method; ++ DSA_get_ex_data; ++ X509V3_EXT_REQ_add_conf; ++ NETSCAPE_SPKI_print; ++ NETSCAPE_SPKI_set_pubkey; ++ NETSCAPE_SPKI_b64_encode; ++ NETSCAPE_SPKI_get_pubkey; ++ NETSCAPE_SPKI_b64_decode; ++ UTF8_putc; ++ UTF8_getc; ++ RSA_null_method; ++ ASN1_tag2str; ++ BIO_ctrl_reset_read_request; ++ DISPLAYTEXT_new; ++ ASN1_GENERALIZEDTIME_free; ++ X509_REVOKED_get_ext_d2i; ++ X509_set_ex_data; ++ X509_reject_set_bit_asc; ++ X509_NAME_add_entry_by_txt; ++ X509_NAME_add_entry_by_NID; ++ X509_PURPOSE_get0; ++ PEM_read_X509_AUX; ++ d2i_AUTHORITY_INFO_ACCESS; ++ PEM_write_PUBKEY; ++ ACCESS_DESCRIPTION_new; ++ X509_CERT_AUX_free; ++ d2i_ACCESS_DESCRIPTION; ++ X509_trust_clear; ++ X509_TRUST_add; ++ ASN1_VISIBLESTRING_new; ++ X509_alias_set1; ++ ASN1_PRINTABLESTRING_free; ++ EVP_PKEY_get1_DSA; ++ ASN1_BMPSTRING_new; ++ ASN1_mbstring_copy; ++ ASN1_UTF8STRING_new; ++ DSA_get_default_method; ++ i2d_ASN1_SET_OF_ACCESS_DESCRIPTION; ++ ASN1_T61STRING_free; ++ DSA_set_method; ++ X509_get_ex_data; ++ ASN1_STRING_type; ++ X509_PURPOSE_get_by_sname; ++ ASN1_TIME_free; ++ ASN1_OCTET_STRING_cmp; ++ ASN1_BIT_STRING_new; ++ X509_get_ext_d2i; ++ PEM_read_bio_X509_AUX; ++ ASN1_STRING_set_default_mask_asc; ++ ASN1_STRING_set_def_mask_asc; ++ PEM_write_bio_RSA_PUBKEY; ++ ASN1_INTEGER_cmp; ++ d2i_RSA_PUBKEY_fp; ++ X509_trust_set_bit_asc; ++ PEM_write_bio_DSA_PUBKEY; ++ X509_STORE_CTX_free; ++ EVP_PKEY_set1_DSA; ++ i2d_DSA_PUBKEY_fp; ++ X509_load_cert_crl_file; ++ ASN1_TIME_new; ++ i2d_RSA_PUBKEY; ++ X509_STORE_CTX_purpose_inherit; ++ PEM_read_RSA_PUBKEY; ++ d2i_X509_AUX; ++ i2d_DSA_PUBKEY; ++ X509_CERT_AUX_print; ++ PEM_read_DSA_PUBKEY; ++ i2d_RSA_PUBKEY_bio; ++ ASN1_BIT_STRING_num_asc; ++ i2d_PUBKEY; ++ ASN1_UTCTIME_free; ++ DSA_set_default_method; ++ X509_PURPOSE_get_by_id; ++ ACCESS_DESCRIPTION_free; ++ PEM_read_bio_PUBKEY; ++ ASN1_STRING_set_by_NID; ++ X509_PURPOSE_get_id; ++ DISPLAYTEXT_free; ++ OTHERNAME_new; ++ X509_CERT_AUX_new; ++ X509_TRUST_cleanup; ++ X509_NAME_add_entry_by_OBJ; ++ X509_CRL_get_ext_d2i; ++ X509_PURPOSE_get0_name; ++ PEM_read_PUBKEY; ++ i2d_DSA_PUBKEY_bio; ++ i2d_OTHERNAME; ++ ASN1_OCTET_STRING_free; ++ ASN1_BIT_STRING_set_asc; ++ X509_get_ex_new_index; ++ ASN1_STRING_TABLE_cleanup; ++ X509_TRUST_get_by_id; ++ X509_PURPOSE_get_trust; ++ ASN1_STRING_length; ++ d2i_ASN1_SET_OF_ACCESS_DESCRIPTION; ++ ASN1_PRINTABLESTRING_new; ++ X509V3_get_d2i; ++ ASN1_ENUMERATED_free; ++ i2d_X509_CERT_AUX; ++ X509_STORE_CTX_set_trust; ++ ASN1_STRING_set_default_mask; ++ X509_STORE_CTX_new; ++ EVP_PKEY_get1_RSA; ++ DIRECTORYSTRING_free; ++ PEM_write_X509_AUX; ++ ASN1_OCTET_STRING_set; ++ d2i_DSA_PUBKEY_fp; ++ d2i_RSA_PUBKEY; ++ X509_TRUST_get0_name; ++ X509_TRUST_get0; ++ AUTHORITY_INFO_ACCESS_free; ++ ASN1_IA5STRING_new; ++ d2i_DSA_PUBKEY; ++ X509_check_purpose; ++ ASN1_ENUMERATED_new; ++ d2i_RSA_PUBKEY_bio; ++ d2i_PUBKEY; ++ X509_TRUST_get_trust; ++ X509_TRUST_get_flags; ++ ASN1_BMPSTRING_free; ++ ASN1_T61STRING_new; ++ ASN1_UTCTIME_new; ++ i2d_AUTHORITY_INFO_ACCESS; ++ EVP_PKEY_set1_RSA; ++ X509_STORE_CTX_set_purpose; ++ ASN1_IA5STRING_free; ++ PEM_write_bio_X509_AUX; ++ X509_PURPOSE_get_count; ++ CRYPTO_add_info; ++ X509_NAME_ENTRY_create_by_txt; ++ ASN1_STRING_get_default_mask; ++ X509_alias_get0; ++ ASN1_STRING_data; ++ i2d_ACCESS_DESCRIPTION; ++ X509_trust_set_bit; ++ ASN1_BIT_STRING_free; ++ PEM_read_bio_RSA_PUBKEY; ++ X509_add1_reject_object; ++ X509_check_trust; ++ PEM_read_bio_DSA_PUBKEY; ++ X509_PURPOSE_add; ++ ASN1_STRING_TABLE_get; ++ ASN1_UTF8STRING_free; ++ d2i_DSA_PUBKEY_bio; ++ PEM_write_RSA_PUBKEY; ++ d2i_OTHERNAME; ++ X509_reject_set_bit; ++ PEM_write_DSA_PUBKEY; ++ X509_PURPOSE_get0_sname; ++ EVP_PKEY_set1_DH; ++ ASN1_OCTET_STRING_dup; ++ ASN1_BIT_STRING_set; ++ X509_TRUST_get_count; ++ ASN1_INTEGER_free; ++ OTHERNAME_free; ++ i2d_RSA_PUBKEY_fp; ++ ASN1_INTEGER_dup; ++ d2i_X509_CERT_AUX; ++ PEM_write_bio_PUBKEY; ++ ASN1_VISIBLESTRING_free; ++ X509_PURPOSE_cleanup; ++ ASN1_mbstring_ncopy; ++ ASN1_GENERALIZEDTIME_new; ++ EVP_PKEY_get1_DH; ++ ASN1_OCTET_STRING_new; ++ ASN1_INTEGER_new; ++ i2d_X509_AUX; ++ ASN1_BIT_STRING_name_print; ++ X509_cmp; ++ ASN1_STRING_length_set; ++ DIRECTORYSTRING_new; ++ X509_add1_trust_object; ++ PKCS12_newpass; ++ SMIME_write_PKCS7; ++ SMIME_read_PKCS7; ++ DES_set_key_checked; ++ PKCS7_verify; ++ PKCS7_encrypt; ++ DES_set_key_unchecked; ++ SMIME_crlf_copy; ++ i2d_ASN1_PRINTABLESTRING; ++ PKCS7_get0_signers; ++ PKCS7_decrypt; ++ SMIME_text; ++ PKCS7_simple_smimecap; ++ PKCS7_get_smimecap; ++ PKCS7_sign; ++ PKCS7_add_attrib_smimecap; ++ CRYPTO_dbg_set_options; ++ CRYPTO_remove_all_info; ++ CRYPTO_get_mem_debug_functions; ++ CRYPTO_is_mem_check_on; ++ CRYPTO_set_mem_debug_functions; ++ CRYPTO_pop_info; ++ CRYPTO_push_info_; ++ CRYPTO_set_mem_debug_options; ++ PEM_write_PKCS8PrivateKey_nid; ++ PEM_write_bio_PKCS8PrivateKey_nid; ++ PEM_write_bio_PKCS8PrivKey_nid; ++ d2i_PKCS8PrivateKey_bio; ++ ASN1_NULL_free; ++ d2i_ASN1_NULL; ++ ASN1_NULL_new; ++ i2d_PKCS8PrivateKey_bio; ++ i2d_PKCS8PrivateKey_fp; ++ i2d_ASN1_NULL; ++ i2d_PKCS8PrivateKey_nid_fp; ++ d2i_PKCS8PrivateKey_fp; ++ i2d_PKCS8PrivateKey_nid_bio; ++ i2d_PKCS8PrivateKeyInfo_fp; ++ i2d_PKCS8PrivateKeyInfo_bio; ++ PEM_cb; ++ i2d_PrivateKey_fp; ++ d2i_PrivateKey_bio; ++ d2i_PrivateKey_fp; ++ i2d_PrivateKey_bio; ++ X509_reject_clear; ++ X509_TRUST_set_default; ++ d2i_AutoPrivateKey; ++ X509_ATTRIBUTE_get0_type; ++ X509_ATTRIBUTE_set1_data; ++ X509at_get_attr; ++ X509at_get_attr_count; ++ X509_ATTRIBUTE_create_by_NID; ++ X509_ATTRIBUTE_set1_object; ++ X509_ATTRIBUTE_count; ++ X509_ATTRIBUTE_create_by_OBJ; ++ X509_ATTRIBUTE_get0_object; ++ X509at_get_attr_by_NID; ++ X509at_add1_attr; ++ X509_ATTRIBUTE_get0_data; ++ X509at_delete_attr; ++ X509at_get_attr_by_OBJ; ++ RAND_add; ++ BIO_number_written; ++ BIO_number_read; ++ X509_STORE_CTX_get1_chain; ++ ERR_load_RAND_strings; ++ RAND_pseudo_bytes; ++ X509_REQ_get_attr_by_NID; ++ X509_REQ_get_attr; ++ X509_REQ_add1_attr_by_NID; ++ X509_REQ_get_attr_by_OBJ; ++ X509at_add1_attr_by_NID; ++ X509_REQ_add1_attr_by_OBJ; ++ X509_REQ_get_attr_count; ++ X509_REQ_add1_attr; ++ X509_REQ_delete_attr; ++ X509at_add1_attr_by_OBJ; ++ X509_REQ_add1_attr_by_txt; ++ X509_ATTRIBUTE_create_by_txt; ++ X509at_add1_attr_by_txt; ++ BN_pseudo_rand; ++ BN_is_prime_fasttest; ++ BN_CTX_end; ++ BN_CTX_start; ++ BN_CTX_get; ++ EVP_PKEY2PKCS8_broken; ++ ASN1_STRING_TABLE_add; ++ CRYPTO_dbg_get_options; ++ AUTHORITY_INFO_ACCESS_new; ++ CRYPTO_get_mem_debug_options; ++ DES_crypt; ++ PEM_write_bio_X509_REQ_NEW; ++ PEM_write_X509_REQ_NEW; ++ BIO_callback_ctrl; ++ RAND_egd; ++ RAND_status; ++ bn_dump1; ++ DES_check_key_parity; ++ lh_num_items; ++ RAND_event; ++ DSO_new; ++ DSO_new_method; ++ DSO_free; ++ DSO_flags; ++ DSO_up; ++ DSO_set_default_method; ++ DSO_get_default_method; ++ DSO_get_method; ++ DSO_set_method; ++ DSO_load; ++ DSO_bind_var; ++ DSO_METHOD_null; ++ DSO_METHOD_openssl; ++ DSO_METHOD_dlfcn; ++ DSO_METHOD_win32; ++ ERR_load_DSO_strings; ++ DSO_METHOD_dl; ++ NCONF_load; ++ NCONF_load_fp; ++ NCONF_new; ++ NCONF_get_string; ++ NCONF_free; ++ NCONF_get_number; ++ CONF_dump_fp; ++ NCONF_load_bio; ++ NCONF_dump_fp; ++ NCONF_get_section; ++ NCONF_dump_bio; ++ CONF_dump_bio; ++ NCONF_free_data; ++ CONF_set_default_method; ++ ERR_error_string_n; ++ BIO_snprintf; ++ DSO_ctrl; ++ i2d_ASN1_SET_OF_ASN1_INTEGER; ++ i2d_ASN1_SET_OF_PKCS12_SAFEBAG; ++ i2d_ASN1_SET_OF_PKCS7; ++ BIO_vfree; ++ d2i_ASN1_SET_OF_ASN1_INTEGER; ++ d2i_ASN1_SET_OF_PKCS12_SAFEBAG; ++ ASN1_UTCTIME_get; ++ X509_REQ_digest; ++ X509_CRL_digest; ++ d2i_ASN1_SET_OF_PKCS7; ++ EVP_CIPHER_CTX_set_key_length; ++ EVP_CIPHER_CTX_ctrl; ++ BN_mod_exp_mont_word; ++ RAND_egd_bytes; ++ X509_REQ_get1_email; ++ X509_get1_email; ++ X509_email_free; ++ i2d_RSA_NET; ++ d2i_RSA_NET_2; ++ d2i_RSA_NET; ++ DSO_bind_func; ++ CRYPTO_get_new_dynlockid; ++ sk_new_null; ++ CRYPTO_set_dynlock_destroy_callback; ++ CRYPTO_set_dynlock_destroy_cb; ++ CRYPTO_destroy_dynlockid; ++ CRYPTO_set_dynlock_size; ++ CRYPTO_set_dynlock_create_callback; ++ CRYPTO_set_dynlock_create_cb; ++ CRYPTO_set_dynlock_lock_callback; ++ CRYPTO_set_dynlock_lock_cb; ++ CRYPTO_get_dynlock_lock_callback; ++ CRYPTO_get_dynlock_lock_cb; ++ CRYPTO_get_dynlock_destroy_callback; ++ CRYPTO_get_dynlock_destroy_cb; ++ CRYPTO_get_dynlock_value; ++ CRYPTO_get_dynlock_create_callback; ++ CRYPTO_get_dynlock_create_cb; ++ c2i_ASN1_BIT_STRING; ++ i2c_ASN1_BIT_STRING; ++ RAND_poll; ++ c2i_ASN1_INTEGER; ++ i2c_ASN1_INTEGER; ++ BIO_dump_indent; ++ ASN1_parse_dump; ++ c2i_ASN1_OBJECT; ++ X509_NAME_print_ex_fp; ++ ASN1_STRING_print_ex_fp; ++ X509_NAME_print_ex; ++ ASN1_STRING_print_ex; ++ MD4; ++ MD4_Transform; ++ MD4_Final; ++ MD4_Update; ++ MD4_Init; ++ EVP_md4; ++ i2d_PUBKEY_bio; ++ i2d_PUBKEY_fp; ++ d2i_PUBKEY_bio; ++ ASN1_STRING_to_UTF8; ++ BIO_vprintf; ++ BIO_vsnprintf; ++ d2i_PUBKEY_fp; ++ X509_cmp_time; ++ X509_STORE_CTX_set_time; ++ X509_STORE_CTX_get1_issuer; ++ X509_OBJECT_retrieve_match; ++ X509_OBJECT_idx_by_subject; ++ X509_STORE_CTX_set_flags; ++ X509_STORE_CTX_trusted_stack; ++ X509_time_adj; ++ X509_check_issued; ++ ASN1_UTCTIME_cmp_time_t; ++ DES_set_weak_key_flag; ++ DES_check_key; ++ DES_rw_mode; ++ RSA_PKCS1_RSAref; ++ X509_keyid_set1; ++ BIO_next; ++ DSO_METHOD_vms; ++ BIO_f_linebuffer; ++ BN_bntest_rand; ++ OPENSSL_issetugid; ++ BN_rand_range; ++ ERR_load_ENGINE_strings; ++ ENGINE_set_DSA; ++ ENGINE_get_finish_function; ++ ENGINE_get_default_RSA; ++ ENGINE_get_BN_mod_exp; ++ DSA_get_default_openssl_method; ++ ENGINE_set_DH; ++ ENGINE_set_def_BN_mod_exp_crt; ++ ENGINE_set_default_BN_mod_exp_crt; ++ ENGINE_init; ++ DH_get_default_openssl_method; ++ RSA_set_default_openssl_method; ++ ENGINE_finish; ++ ENGINE_load_public_key; ++ ENGINE_get_DH; ++ ENGINE_ctrl; ++ ENGINE_get_init_function; ++ ENGINE_set_init_function; ++ ENGINE_set_default_DSA; ++ ENGINE_get_name; ++ ENGINE_get_last; ++ ENGINE_get_prev; ++ ENGINE_get_default_DH; ++ ENGINE_get_RSA; ++ ENGINE_set_default; ++ ENGINE_get_RAND; ++ ENGINE_get_first; ++ ENGINE_by_id; ++ ENGINE_set_finish_function; ++ ENGINE_get_def_BN_mod_exp_crt; ++ ENGINE_get_default_BN_mod_exp_crt; ++ RSA_get_default_openssl_method; ++ ENGINE_set_RSA; ++ ENGINE_load_private_key; ++ ENGINE_set_default_RAND; ++ ENGINE_set_BN_mod_exp; ++ ENGINE_remove; ++ ENGINE_free; ++ ENGINE_get_BN_mod_exp_crt; ++ ENGINE_get_next; ++ ENGINE_set_name; ++ ENGINE_get_default_DSA; ++ ENGINE_set_default_BN_mod_exp; ++ ENGINE_set_default_RSA; ++ ENGINE_get_default_RAND; ++ ENGINE_get_default_BN_mod_exp; ++ ENGINE_set_RAND; ++ ENGINE_set_id; ++ ENGINE_set_BN_mod_exp_crt; ++ ENGINE_set_default_DH; ++ ENGINE_new; ++ ENGINE_get_id; ++ DSA_set_default_openssl_method; ++ ENGINE_add; ++ DH_set_default_openssl_method; ++ ENGINE_get_DSA; ++ ENGINE_get_ctrl_function; ++ ENGINE_set_ctrl_function; ++ BN_pseudo_rand_range; ++ X509_STORE_CTX_set_verify_cb; ++ ERR_load_COMP_strings; ++ PKCS12_item_decrypt_d2i; ++ ASN1_UTF8STRING_it; ++ ASN1_UTF8STRING_it; ++ ENGINE_unregister_ciphers; ++ ENGINE_get_ciphers; ++ d2i_OCSP_BASICRESP; ++ KRB5_CHECKSUM_it; ++ KRB5_CHECKSUM_it; ++ EC_POINT_add; ++ ASN1_item_ex_i2d; ++ OCSP_CERTID_it; ++ OCSP_CERTID_it; ++ d2i_OCSP_RESPBYTES; ++ X509V3_add1_i2d; ++ PKCS7_ENVELOPE_it; ++ PKCS7_ENVELOPE_it; ++ UI_add_input_boolean; ++ ENGINE_unregister_RSA; ++ X509V3_EXT_nconf; ++ ASN1_GENERALSTRING_free; ++ d2i_OCSP_CERTSTATUS; ++ X509_REVOKED_set_serialNumber; ++ X509_print_ex; ++ OCSP_ONEREQ_get1_ext_d2i; ++ ENGINE_register_all_RAND; ++ ENGINE_load_dynamic; ++ PBKDF2PARAM_it; ++ PBKDF2PARAM_it; ++ EXTENDED_KEY_USAGE_new; ++ EC_GROUP_clear_free; ++ OCSP_sendreq_bio; ++ ASN1_item_digest; ++ OCSP_BASICRESP_delete_ext; ++ OCSP_SIGNATURE_it; ++ OCSP_SIGNATURE_it; ++ X509_CRL_it; ++ X509_CRL_it; ++ OCSP_BASICRESP_add_ext; ++ KRB5_ENCKEY_it; ++ KRB5_ENCKEY_it; ++ UI_method_set_closer; ++ X509_STORE_set_purpose; ++ i2d_ASN1_GENERALSTRING; ++ OCSP_response_status; ++ i2d_OCSP_SERVICELOC; ++ ENGINE_get_digest_engine; ++ EC_GROUP_set_curve_GFp; ++ OCSP_REQUEST_get_ext_by_OBJ; ++ _ossl_old_des_random_key; ++ ASN1_T61STRING_it; ++ ASN1_T61STRING_it; ++ EC_GROUP_method_of; ++ i2d_KRB5_APREQ; ++ _ossl_old_des_encrypt; ++ ASN1_PRINTABLE_new; ++ HMAC_Init_ex; ++ d2i_KRB5_AUTHENT; ++ OCSP_archive_cutoff_new; ++ EC_POINT_set_Jprojective_coordinates_GFp; ++ EC_POINT_set_Jproj_coords_GFp; ++ _ossl_old_des_is_weak_key; ++ OCSP_BASICRESP_get_ext_by_OBJ; ++ EC_POINT_oct2point; ++ OCSP_SINGLERESP_get_ext_count; ++ UI_ctrl; ++ _shadow_DES_rw_mode; ++ _shadow_DES_rw_mode; ++ asn1_do_adb; ++ ASN1_template_i2d; ++ ENGINE_register_DH; ++ UI_construct_prompt; ++ X509_STORE_set_trust; ++ UI_dup_input_string; ++ d2i_KRB5_APREQ; ++ EVP_MD_CTX_copy_ex; ++ OCSP_request_is_signed; ++ i2d_OCSP_REQINFO; ++ KRB5_ENCKEY_free; ++ OCSP_resp_get0; ++ GENERAL_NAME_it; ++ GENERAL_NAME_it; ++ ASN1_GENERALIZEDTIME_it; ++ ASN1_GENERALIZEDTIME_it; ++ X509_STORE_set_flags; ++ EC_POINT_set_compressed_coordinates_GFp; ++ EC_POINT_set_compr_coords_GFp; ++ OCSP_response_status_str; ++ d2i_OCSP_REVOKEDINFO; ++ OCSP_basic_add1_cert; ++ ERR_get_implementation; ++ EVP_CipherFinal_ex; ++ OCSP_CERTSTATUS_new; ++ CRYPTO_cleanup_all_ex_data; ++ OCSP_resp_find; ++ BN_nnmod; ++ X509_CRL_sort; ++ X509_REVOKED_set_revocationDate; ++ ENGINE_register_RAND; ++ OCSP_SERVICELOC_new; ++ EC_POINT_set_affine_coordinates_GFp; ++ EC_POINT_set_affine_coords_GFp; ++ _ossl_old_des_options; ++ SXNET_it; ++ SXNET_it; ++ UI_dup_input_boolean; ++ PKCS12_add_CSPName_asc; ++ EC_POINT_is_at_infinity; ++ ENGINE_load_cryptodev; ++ DSO_convert_filename; ++ POLICYQUALINFO_it; ++ POLICYQUALINFO_it; ++ ENGINE_register_ciphers; ++ BN_mod_lshift_quick; ++ DSO_set_filename; ++ ASN1_item_free; ++ KRB5_TKTBODY_free; ++ AUTHORITY_KEYID_it; ++ AUTHORITY_KEYID_it; ++ KRB5_APREQBODY_new; ++ X509V3_EXT_REQ_add_nconf; ++ ENGINE_ctrl_cmd_string; ++ i2d_OCSP_RESPDATA; ++ EVP_MD_CTX_init; ++ EXTENDED_KEY_USAGE_free; ++ PKCS7_ATTR_SIGN_it; ++ PKCS7_ATTR_SIGN_it; ++ UI_add_error_string; ++ KRB5_CHECKSUM_free; ++ OCSP_REQUEST_get_ext; ++ ENGINE_load_ubsec; ++ ENGINE_register_all_digests; ++ PKEY_USAGE_PERIOD_it; ++ PKEY_USAGE_PERIOD_it; ++ PKCS12_unpack_authsafes; ++ ASN1_item_unpack; ++ NETSCAPE_SPKAC_it; ++ NETSCAPE_SPKAC_it; ++ X509_REVOKED_it; ++ X509_REVOKED_it; ++ ASN1_STRING_encode; ++ EVP_aes_128_ecb; ++ KRB5_AUTHENT_free; ++ OCSP_BASICRESP_get_ext_by_critical; ++ OCSP_BASICRESP_get_ext_by_crit; ++ OCSP_cert_status_str; ++ d2i_OCSP_REQUEST; ++ UI_dup_info_string; ++ _ossl_old_des_xwhite_in2out; ++ PKCS12_it; ++ PKCS12_it; ++ OCSP_SINGLERESP_get_ext_by_critical; ++ OCSP_SINGLERESP_get_ext_by_crit; ++ OCSP_CERTSTATUS_free; ++ _ossl_old_des_crypt; ++ ASN1_item_i2d; ++ EVP_DecryptFinal_ex; ++ ENGINE_load_openssl; ++ ENGINE_get_cmd_defns; ++ ENGINE_set_load_privkey_function; ++ ENGINE_set_load_privkey_fn; ++ EVP_EncryptFinal_ex; ++ ENGINE_set_default_digests; ++ X509_get0_pubkey_bitstr; ++ asn1_ex_i2c; ++ ENGINE_register_RSA; ++ ENGINE_unregister_DSA; ++ _ossl_old_des_key_sched; ++ X509_EXTENSION_it; ++ X509_EXTENSION_it; ++ i2d_KRB5_AUTHENT; ++ SXNETID_it; ++ SXNETID_it; ++ d2i_OCSP_SINGLERESP; ++ EDIPARTYNAME_new; ++ PKCS12_certbag2x509; ++ _ossl_old_des_ofb64_encrypt; ++ d2i_EXTENDED_KEY_USAGE; ++ ERR_print_errors_cb; ++ ENGINE_set_ciphers; ++ d2i_KRB5_APREQBODY; ++ UI_method_get_flusher; ++ X509_PUBKEY_it; ++ X509_PUBKEY_it; ++ _ossl_old_des_enc_read; ++ PKCS7_ENCRYPT_it; ++ PKCS7_ENCRYPT_it; ++ i2d_OCSP_RESPONSE; ++ EC_GROUP_get_cofactor; ++ PKCS12_unpack_p7data; ++ d2i_KRB5_AUTHDATA; ++ OCSP_copy_nonce; ++ KRB5_AUTHDATA_new; ++ OCSP_RESPDATA_new; ++ EC_GFp_mont_method; ++ OCSP_REVOKEDINFO_free; ++ UI_get_ex_data; ++ KRB5_APREQBODY_free; ++ EC_GROUP_get0_generator; ++ UI_get_default_method; ++ X509V3_set_nconf; ++ PKCS12_item_i2d_encrypt; ++ X509_add1_ext_i2d; ++ PKCS7_SIGNER_INFO_it; ++ PKCS7_SIGNER_INFO_it; ++ KRB5_PRINCNAME_new; ++ PKCS12_SAFEBAG_it; ++ PKCS12_SAFEBAG_it; ++ EC_GROUP_get_order; ++ d2i_OCSP_RESPID; ++ OCSP_request_verify; ++ NCONF_get_number_e; ++ _ossl_old_des_decrypt3; ++ X509_signature_print; ++ OCSP_SINGLERESP_free; ++ ENGINE_load_builtin_engines; ++ i2d_OCSP_ONEREQ; ++ OCSP_REQUEST_add_ext; ++ OCSP_RESPBYTES_new; ++ EVP_MD_CTX_create; ++ OCSP_resp_find_status; ++ X509_ALGOR_it; ++ X509_ALGOR_it; ++ ASN1_TIME_it; ++ ASN1_TIME_it; ++ OCSP_request_set1_name; ++ OCSP_ONEREQ_get_ext_count; ++ UI_get0_result; ++ PKCS12_AUTHSAFES_it; ++ PKCS12_AUTHSAFES_it; ++ EVP_aes_256_ecb; ++ PKCS12_pack_authsafes; ++ ASN1_IA5STRING_it; ++ ASN1_IA5STRING_it; ++ UI_get_input_flags; ++ EC_GROUP_set_generator; ++ _ossl_old_des_string_to_2keys; ++ OCSP_CERTID_free; ++ X509_CERT_AUX_it; ++ X509_CERT_AUX_it; ++ CERTIFICATEPOLICIES_it; ++ CERTIFICATEPOLICIES_it; ++ _ossl_old_des_ede3_cbc_encrypt; ++ RAND_set_rand_engine; ++ DSO_get_loaded_filename; ++ X509_ATTRIBUTE_it; ++ X509_ATTRIBUTE_it; ++ OCSP_ONEREQ_get_ext_by_NID; ++ PKCS12_decrypt_skey; ++ KRB5_AUTHENT_it; ++ KRB5_AUTHENT_it; ++ UI_dup_error_string; ++ RSAPublicKey_it; ++ RSAPublicKey_it; ++ i2d_OCSP_REQUEST; ++ PKCS12_x509crl2certbag; ++ OCSP_SERVICELOC_it; ++ OCSP_SERVICELOC_it; ++ ASN1_item_sign; ++ X509_CRL_set_issuer_name; ++ OBJ_NAME_do_all_sorted; ++ i2d_OCSP_BASICRESP; ++ i2d_OCSP_RESPBYTES; ++ PKCS12_unpack_p7encdata; ++ HMAC_CTX_init; ++ ENGINE_get_digest; ++ OCSP_RESPONSE_print; ++ KRB5_TKTBODY_it; ++ KRB5_TKTBODY_it; ++ ACCESS_DESCRIPTION_it; ++ ACCESS_DESCRIPTION_it; ++ PKCS7_ISSUER_AND_SERIAL_it; ++ PKCS7_ISSUER_AND_SERIAL_it; ++ PBE2PARAM_it; ++ PBE2PARAM_it; ++ PKCS12_certbag2x509crl; ++ PKCS7_SIGNED_it; ++ PKCS7_SIGNED_it; ++ ENGINE_get_cipher; ++ i2d_OCSP_CRLID; ++ OCSP_SINGLERESP_new; ++ ENGINE_cmd_is_executable; ++ RSA_up_ref; ++ ASN1_GENERALSTRING_it; ++ ASN1_GENERALSTRING_it; ++ ENGINE_register_DSA; ++ X509V3_EXT_add_nconf_sk; ++ ENGINE_set_load_pubkey_function; ++ PKCS8_decrypt; ++ PEM_bytes_read_bio; ++ DIRECTORYSTRING_it; ++ DIRECTORYSTRING_it; ++ d2i_OCSP_CRLID; ++ EC_POINT_is_on_curve; ++ CRYPTO_set_locked_mem_ex_functions; ++ CRYPTO_set_locked_mem_ex_funcs; ++ d2i_KRB5_CHECKSUM; ++ ASN1_item_dup; ++ X509_it; ++ X509_it; ++ BN_mod_add; ++ KRB5_AUTHDATA_free; ++ _ossl_old_des_cbc_cksum; ++ ASN1_item_verify; ++ CRYPTO_set_mem_ex_functions; ++ EC_POINT_get_Jprojective_coordinates_GFp; ++ EC_POINT_get_Jproj_coords_GFp; ++ ZLONG_it; ++ ZLONG_it; ++ CRYPTO_get_locked_mem_ex_functions; ++ CRYPTO_get_locked_mem_ex_funcs; ++ ASN1_TIME_check; ++ UI_get0_user_data; ++ HMAC_CTX_cleanup; ++ DSA_up_ref; ++ _ossl_old_des_ede3_cfb64_encrypt; ++ _ossl_odes_ede3_cfb64_encrypt; ++ ASN1_BMPSTRING_it; ++ ASN1_BMPSTRING_it; ++ ASN1_tag2bit; ++ UI_method_set_flusher; ++ X509_ocspid_print; ++ KRB5_ENCDATA_it; ++ KRB5_ENCDATA_it; ++ ENGINE_get_load_pubkey_function; ++ UI_add_user_data; ++ OCSP_REQUEST_delete_ext; ++ UI_get_method; ++ OCSP_ONEREQ_free; ++ ASN1_PRINTABLESTRING_it; ++ ASN1_PRINTABLESTRING_it; ++ X509_CRL_set_nextUpdate; ++ OCSP_REQUEST_it; ++ OCSP_REQUEST_it; ++ OCSP_BASICRESP_it; ++ OCSP_BASICRESP_it; ++ AES_ecb_encrypt; ++ BN_mod_sqr; ++ NETSCAPE_CERT_SEQUENCE_it; ++ NETSCAPE_CERT_SEQUENCE_it; ++ GENERAL_NAMES_it; ++ GENERAL_NAMES_it; ++ AUTHORITY_INFO_ACCESS_it; ++ AUTHORITY_INFO_ACCESS_it; ++ ASN1_FBOOLEAN_it; ++ ASN1_FBOOLEAN_it; ++ UI_set_ex_data; ++ _ossl_old_des_string_to_key; ++ ENGINE_register_all_RSA; ++ d2i_KRB5_PRINCNAME; ++ OCSP_RESPBYTES_it; ++ OCSP_RESPBYTES_it; ++ X509_CINF_it; ++ X509_CINF_it; ++ ENGINE_unregister_digests; ++ d2i_EDIPARTYNAME; ++ d2i_OCSP_SERVICELOC; ++ ENGINE_get_digests; ++ _ossl_old_des_set_odd_parity; ++ OCSP_RESPDATA_free; ++ d2i_KRB5_TICKET; ++ OTHERNAME_it; ++ OTHERNAME_it; ++ EVP_MD_CTX_cleanup; ++ d2i_ASN1_GENERALSTRING; ++ X509_CRL_set_version; ++ BN_mod_sub; ++ OCSP_SINGLERESP_get_ext_by_NID; ++ ENGINE_get_ex_new_index; ++ OCSP_REQUEST_free; ++ OCSP_REQUEST_add1_ext_i2d; ++ X509_VAL_it; ++ X509_VAL_it; ++ EC_POINTs_make_affine; ++ EC_POINT_mul; ++ X509V3_EXT_add_nconf; ++ X509_TRUST_set; ++ X509_CRL_add1_ext_i2d; ++ _ossl_old_des_fcrypt; ++ DISPLAYTEXT_it; ++ DISPLAYTEXT_it; ++ X509_CRL_set_lastUpdate; ++ OCSP_BASICRESP_free; ++ OCSP_BASICRESP_add1_ext_i2d; ++ d2i_KRB5_AUTHENTBODY; ++ CRYPTO_set_ex_data_implementation; ++ CRYPTO_set_ex_data_impl; ++ KRB5_ENCDATA_new; ++ DSO_up_ref; ++ OCSP_crl_reason_str; ++ UI_get0_result_string; ++ ASN1_GENERALSTRING_new; ++ X509_SIG_it; ++ X509_SIG_it; ++ ERR_set_implementation; ++ ERR_load_EC_strings; ++ UI_get0_action_string; ++ OCSP_ONEREQ_get_ext; ++ EC_POINT_method_of; ++ i2d_KRB5_APREQBODY; ++ _ossl_old_des_ecb3_encrypt; ++ CRYPTO_get_mem_ex_functions; ++ ENGINE_get_ex_data; ++ UI_destroy_method; ++ ASN1_item_i2d_bio; ++ OCSP_ONEREQ_get_ext_by_OBJ; ++ ASN1_primitive_new; ++ ASN1_PRINTABLE_it; ++ ASN1_PRINTABLE_it; ++ EVP_aes_192_ecb; ++ OCSP_SIGNATURE_new; ++ LONG_it; ++ LONG_it; ++ ASN1_VISIBLESTRING_it; ++ ASN1_VISIBLESTRING_it; ++ OCSP_SINGLERESP_add1_ext_i2d; ++ d2i_OCSP_CERTID; ++ ASN1_item_d2i_fp; ++ CRL_DIST_POINTS_it; ++ CRL_DIST_POINTS_it; ++ GENERAL_NAME_print; ++ OCSP_SINGLERESP_delete_ext; ++ PKCS12_SAFEBAGS_it; ++ PKCS12_SAFEBAGS_it; ++ d2i_OCSP_SIGNATURE; ++ OCSP_request_add1_nonce; ++ ENGINE_set_cmd_defns; ++ OCSP_SERVICELOC_free; ++ EC_GROUP_free; ++ ASN1_BIT_STRING_it; ++ ASN1_BIT_STRING_it; ++ X509_REQ_it; ++ X509_REQ_it; ++ _ossl_old_des_cbc_encrypt; ++ ERR_unload_strings; ++ PKCS7_SIGN_ENVELOPE_it; ++ PKCS7_SIGN_ENVELOPE_it; ++ EDIPARTYNAME_free; ++ OCSP_REQINFO_free; ++ EC_GROUP_new_curve_GFp; ++ OCSP_REQUEST_get1_ext_d2i; ++ PKCS12_item_pack_safebag; ++ asn1_ex_c2i; ++ ENGINE_register_digests; ++ i2d_OCSP_REVOKEDINFO; ++ asn1_enc_restore; ++ UI_free; ++ UI_new_method; ++ EVP_EncryptInit_ex; ++ X509_pubkey_digest; ++ EC_POINT_invert; ++ OCSP_basic_sign; ++ i2d_OCSP_RESPID; ++ OCSP_check_nonce; ++ ENGINE_ctrl_cmd; ++ d2i_KRB5_ENCKEY; ++ OCSP_parse_url; ++ OCSP_SINGLERESP_get_ext; ++ OCSP_CRLID_free; ++ OCSP_BASICRESP_get1_ext_d2i; ++ RSAPrivateKey_it; ++ RSAPrivateKey_it; ++ ENGINE_register_all_DH; ++ i2d_EDIPARTYNAME; ++ EC_POINT_get_affine_coordinates_GFp; ++ EC_POINT_get_affine_coords_GFp; ++ OCSP_CRLID_new; ++ ENGINE_get_flags; ++ OCSP_ONEREQ_it; ++ OCSP_ONEREQ_it; ++ UI_process; ++ ASN1_INTEGER_it; ++ ASN1_INTEGER_it; ++ EVP_CipherInit_ex; ++ UI_get_string_type; ++ ENGINE_unregister_DH; ++ ENGINE_register_all_DSA; ++ OCSP_ONEREQ_get_ext_by_critical; ++ bn_dup_expand; ++ OCSP_cert_id_new; ++ BASIC_CONSTRAINTS_it; ++ BASIC_CONSTRAINTS_it; ++ BN_mod_add_quick; ++ EC_POINT_new; ++ EVP_MD_CTX_destroy; ++ OCSP_RESPBYTES_free; ++ EVP_aes_128_cbc; ++ OCSP_SINGLERESP_get1_ext_d2i; ++ EC_POINT_free; ++ DH_up_ref; ++ X509_NAME_ENTRY_it; ++ X509_NAME_ENTRY_it; ++ UI_get_ex_new_index; ++ BN_mod_sub_quick; ++ OCSP_ONEREQ_add_ext; ++ OCSP_request_sign; ++ EVP_DigestFinal_ex; ++ ENGINE_set_digests; ++ OCSP_id_issuer_cmp; ++ OBJ_NAME_do_all; ++ EC_POINTs_mul; ++ ENGINE_register_complete; ++ X509V3_EXT_nconf_nid; ++ ASN1_SEQUENCE_it; ++ ASN1_SEQUENCE_it; ++ UI_set_default_method; ++ RAND_query_egd_bytes; ++ UI_method_get_writer; ++ UI_OpenSSL; ++ PEM_def_callback; ++ ENGINE_cleanup; ++ DIST_POINT_it; ++ DIST_POINT_it; ++ OCSP_SINGLERESP_it; ++ OCSP_SINGLERESP_it; ++ d2i_KRB5_TKTBODY; ++ EC_POINT_cmp; ++ OCSP_REVOKEDINFO_new; ++ i2d_OCSP_CERTSTATUS; ++ OCSP_basic_add1_nonce; ++ ASN1_item_ex_d2i; ++ BN_mod_lshift1_quick; ++ UI_set_method; ++ OCSP_id_get0_info; ++ BN_mod_sqrt; ++ EC_GROUP_copy; ++ KRB5_ENCDATA_free; ++ _ossl_old_des_cfb_encrypt; ++ OCSP_SINGLERESP_get_ext_by_OBJ; ++ OCSP_cert_to_id; ++ OCSP_RESPID_new; ++ OCSP_RESPDATA_it; ++ OCSP_RESPDATA_it; ++ d2i_OCSP_RESPDATA; ++ ENGINE_register_all_complete; ++ OCSP_check_validity; ++ PKCS12_BAGS_it; ++ PKCS12_BAGS_it; ++ OCSP_url_svcloc_new; ++ ASN1_template_free; ++ OCSP_SINGLERESP_add_ext; ++ KRB5_AUTHENTBODY_it; ++ KRB5_AUTHENTBODY_it; ++ X509_supported_extension; ++ i2d_KRB5_AUTHDATA; ++ UI_method_get_opener; ++ ENGINE_set_ex_data; ++ OCSP_REQUEST_print; ++ CBIGNUM_it; ++ CBIGNUM_it; ++ KRB5_TICKET_new; ++ KRB5_APREQ_new; ++ EC_GROUP_get_curve_GFp; ++ KRB5_ENCKEY_new; ++ ASN1_template_d2i; ++ _ossl_old_des_quad_cksum; ++ OCSP_single_get0_status; ++ BN_swap; ++ POLICYINFO_it; ++ POLICYINFO_it; ++ ENGINE_set_destroy_function; ++ asn1_enc_free; ++ OCSP_RESPID_it; ++ OCSP_RESPID_it; ++ EC_GROUP_new; ++ EVP_aes_256_cbc; ++ i2d_KRB5_PRINCNAME; ++ _ossl_old_des_encrypt2; ++ _ossl_old_des_encrypt3; ++ PKCS8_PRIV_KEY_INFO_it; ++ PKCS8_PRIV_KEY_INFO_it; ++ OCSP_REQINFO_it; ++ OCSP_REQINFO_it; ++ PBEPARAM_it; ++ PBEPARAM_it; ++ KRB5_AUTHENTBODY_new; ++ X509_CRL_add0_revoked; ++ EDIPARTYNAME_it; ++ EDIPARTYNAME_it; ++ NETSCAPE_SPKI_it; ++ NETSCAPE_SPKI_it; ++ UI_get0_test_string; ++ ENGINE_get_cipher_engine; ++ ENGINE_register_all_ciphers; ++ EC_POINT_copy; ++ BN_kronecker; ++ _ossl_old_des_ede3_ofb64_encrypt; ++ _ossl_odes_ede3_ofb64_encrypt; ++ UI_method_get_reader; ++ OCSP_BASICRESP_get_ext_count; ++ ASN1_ENUMERATED_it; ++ ASN1_ENUMERATED_it; ++ UI_set_result; ++ i2d_KRB5_TICKET; ++ X509_print_ex_fp; ++ EVP_CIPHER_CTX_set_padding; ++ d2i_OCSP_RESPONSE; ++ ASN1_UTCTIME_it; ++ ASN1_UTCTIME_it; ++ _ossl_old_des_enc_write; ++ OCSP_RESPONSE_new; ++ AES_set_encrypt_key; ++ OCSP_resp_count; ++ KRB5_CHECKSUM_new; ++ ENGINE_load_cswift; ++ OCSP_onereq_get0_id; ++ ENGINE_set_default_ciphers; ++ NOTICEREF_it; ++ NOTICEREF_it; ++ X509V3_EXT_CRL_add_nconf; ++ OCSP_REVOKEDINFO_it; ++ OCSP_REVOKEDINFO_it; ++ AES_encrypt; ++ OCSP_REQUEST_new; ++ ASN1_ANY_it; ++ ASN1_ANY_it; ++ CRYPTO_ex_data_new_class; ++ _ossl_old_des_ncbc_encrypt; ++ i2d_KRB5_TKTBODY; ++ EC_POINT_clear_free; ++ AES_decrypt; ++ asn1_enc_init; ++ UI_get_result_maxsize; ++ OCSP_CERTID_new; ++ ENGINE_unregister_RAND; ++ UI_method_get_closer; ++ d2i_KRB5_ENCDATA; ++ OCSP_request_onereq_count; ++ OCSP_basic_verify; ++ KRB5_AUTHENTBODY_free; ++ ASN1_item_d2i; ++ ASN1_primitive_free; ++ i2d_EXTENDED_KEY_USAGE; ++ i2d_OCSP_SIGNATURE; ++ asn1_enc_save; ++ ENGINE_load_nuron; ++ _ossl_old_des_pcbc_encrypt; ++ PKCS12_MAC_DATA_it; ++ PKCS12_MAC_DATA_it; ++ OCSP_accept_responses_new; ++ asn1_do_lock; ++ PKCS7_ATTR_VERIFY_it; ++ PKCS7_ATTR_VERIFY_it; ++ KRB5_APREQBODY_it; ++ KRB5_APREQBODY_it; ++ i2d_OCSP_SINGLERESP; ++ ASN1_item_ex_new; ++ UI_add_verify_string; ++ _ossl_old_des_set_key; ++ KRB5_PRINCNAME_it; ++ KRB5_PRINCNAME_it; ++ EVP_DecryptInit_ex; ++ i2d_OCSP_CERTID; ++ ASN1_item_d2i_bio; ++ EC_POINT_dbl; ++ asn1_get_choice_selector; ++ i2d_KRB5_CHECKSUM; ++ ENGINE_set_table_flags; ++ AES_options; ++ ENGINE_load_chil; ++ OCSP_id_cmp; ++ OCSP_BASICRESP_new; ++ OCSP_REQUEST_get_ext_by_NID; ++ KRB5_APREQ_it; ++ KRB5_APREQ_it; ++ ENGINE_get_destroy_function; ++ CONF_set_nconf; ++ ASN1_PRINTABLE_free; ++ OCSP_BASICRESP_get_ext_by_NID; ++ DIST_POINT_NAME_it; ++ DIST_POINT_NAME_it; ++ X509V3_extensions_print; ++ _ossl_old_des_cfb64_encrypt; ++ X509_REVOKED_add1_ext_i2d; ++ _ossl_old_des_ofb_encrypt; ++ KRB5_TKTBODY_new; ++ ASN1_OCTET_STRING_it; ++ ASN1_OCTET_STRING_it; ++ ERR_load_UI_strings; ++ i2d_KRB5_ENCKEY; ++ ASN1_template_new; ++ OCSP_SIGNATURE_free; ++ ASN1_item_i2d_fp; ++ KRB5_PRINCNAME_free; ++ PKCS7_RECIP_INFO_it; ++ PKCS7_RECIP_INFO_it; ++ EXTENDED_KEY_USAGE_it; ++ EXTENDED_KEY_USAGE_it; ++ EC_GFp_simple_method; ++ EC_GROUP_precompute_mult; ++ OCSP_request_onereq_get0; ++ UI_method_set_writer; ++ KRB5_AUTHENT_new; ++ X509_CRL_INFO_it; ++ X509_CRL_INFO_it; ++ DSO_set_name_converter; ++ AES_set_decrypt_key; ++ PKCS7_DIGEST_it; ++ PKCS7_DIGEST_it; ++ PKCS12_x5092certbag; ++ EVP_DigestInit_ex; ++ i2a_ACCESS_DESCRIPTION; ++ OCSP_RESPONSE_it; ++ OCSP_RESPONSE_it; ++ PKCS7_ENC_CONTENT_it; ++ PKCS7_ENC_CONTENT_it; ++ OCSP_request_add0_id; ++ EC_POINT_make_affine; ++ DSO_get_filename; ++ OCSP_CERTSTATUS_it; ++ OCSP_CERTSTATUS_it; ++ OCSP_request_add1_cert; ++ UI_get0_output_string; ++ UI_dup_verify_string; ++ BN_mod_lshift; ++ KRB5_AUTHDATA_it; ++ KRB5_AUTHDATA_it; ++ asn1_set_choice_selector; ++ OCSP_basic_add1_status; ++ OCSP_RESPID_free; ++ asn1_get_field_ptr; ++ UI_add_input_string; ++ OCSP_CRLID_it; ++ OCSP_CRLID_it; ++ i2d_KRB5_AUTHENTBODY; ++ OCSP_REQUEST_get_ext_count; ++ ENGINE_load_atalla; ++ X509_NAME_it; ++ X509_NAME_it; ++ USERNOTICE_it; ++ USERNOTICE_it; ++ OCSP_REQINFO_new; ++ OCSP_BASICRESP_get_ext; ++ CRYPTO_get_ex_data_implementation; ++ CRYPTO_get_ex_data_impl; ++ ASN1_item_pack; ++ i2d_KRB5_ENCDATA; ++ X509_PURPOSE_set; ++ X509_REQ_INFO_it; ++ X509_REQ_INFO_it; ++ UI_method_set_opener; ++ ASN1_item_ex_free; ++ ASN1_BOOLEAN_it; ++ ASN1_BOOLEAN_it; ++ ENGINE_get_table_flags; ++ UI_create_method; ++ OCSP_ONEREQ_add1_ext_i2d; ++ _shadow_DES_check_key; ++ _shadow_DES_check_key; ++ d2i_OCSP_REQINFO; ++ UI_add_info_string; ++ UI_get_result_minsize; ++ ASN1_NULL_it; ++ ASN1_NULL_it; ++ BN_mod_lshift1; ++ d2i_OCSP_ONEREQ; ++ OCSP_ONEREQ_new; ++ KRB5_TICKET_it; ++ KRB5_TICKET_it; ++ EVP_aes_192_cbc; ++ KRB5_TICKET_free; ++ UI_new; ++ OCSP_response_create; ++ _ossl_old_des_xcbc_encrypt; ++ PKCS7_it; ++ PKCS7_it; ++ OCSP_REQUEST_get_ext_by_critical; ++ OCSP_REQUEST_get_ext_by_crit; ++ ENGINE_set_flags; ++ _ossl_old_des_ecb_encrypt; ++ OCSP_response_get1_basic; ++ EVP_Digest; ++ OCSP_ONEREQ_delete_ext; ++ ASN1_TBOOLEAN_it; ++ ASN1_TBOOLEAN_it; ++ ASN1_item_new; ++ ASN1_TIME_to_generalizedtime; ++ BIGNUM_it; ++ BIGNUM_it; ++ AES_cbc_encrypt; ++ ENGINE_get_load_privkey_function; ++ ENGINE_get_load_privkey_fn; ++ OCSP_RESPONSE_free; ++ UI_method_set_reader; ++ i2d_ASN1_T61STRING; ++ EC_POINT_set_to_infinity; ++ ERR_load_OCSP_strings; ++ EC_POINT_point2oct; ++ KRB5_APREQ_free; ++ ASN1_OBJECT_it; ++ ASN1_OBJECT_it; ++ OCSP_crlID_new; ++ OCSP_crlID2_new; ++ CONF_modules_load_file; ++ CONF_imodule_set_usr_data; ++ ENGINE_set_default_string; ++ CONF_module_get_usr_data; ++ ASN1_add_oid_module; ++ CONF_modules_finish; ++ OPENSSL_config; ++ CONF_modules_unload; ++ CONF_imodule_get_value; ++ CONF_module_set_usr_data; ++ CONF_parse_list; ++ CONF_module_add; ++ CONF_get1_default_config_file; ++ CONF_imodule_get_flags; ++ CONF_imodule_get_module; ++ CONF_modules_load; ++ CONF_imodule_get_name; ++ ERR_peek_top_error; ++ CONF_imodule_get_usr_data; ++ CONF_imodule_set_flags; ++ ENGINE_add_conf_module; ++ ERR_peek_last_error_line; ++ ERR_peek_last_error_line_data; ++ ERR_peek_last_error; ++ DES_read_2passwords; ++ DES_read_password; ++ UI_UTIL_read_pw; ++ UI_UTIL_read_pw_string; ++ ENGINE_load_aep; ++ ENGINE_load_sureware; ++ OPENSSL_add_all_algorithms_noconf; ++ OPENSSL_add_all_algo_noconf; ++ OPENSSL_add_all_algorithms_conf; ++ OPENSSL_add_all_algo_conf; ++ OPENSSL_load_builtin_modules; ++ AES_ofb128_encrypt; ++ AES_ctr128_encrypt; ++ AES_cfb128_encrypt; ++ ENGINE_load_4758cca; ++ _ossl_096_des_random_seed; ++ EVP_aes_256_ofb; ++ EVP_aes_192_ofb; ++ EVP_aes_128_cfb128; ++ EVP_aes_256_cfb128; ++ EVP_aes_128_ofb; ++ EVP_aes_192_cfb128; ++ CONF_modules_free; ++ NCONF_default; ++ OPENSSL_no_config; ++ NCONF_WIN32; ++ ASN1_UNIVERSALSTRING_new; ++ EVP_des_ede_ecb; ++ i2d_ASN1_UNIVERSALSTRING; ++ ASN1_UNIVERSALSTRING_free; ++ ASN1_UNIVERSALSTRING_it; ++ ASN1_UNIVERSALSTRING_it; ++ d2i_ASN1_UNIVERSALSTRING; ++ EVP_des_ede3_ecb; ++ X509_REQ_print_ex; ++ ENGINE_up_ref; ++ BUF_MEM_grow_clean; ++ CRYPTO_realloc_clean; ++ BUF_strlcat; ++ BIO_indent; ++ BUF_strlcpy; ++ OpenSSLDie; ++ OPENSSL_cleanse; ++ ENGINE_setup_bsd_cryptodev; ++ ERR_release_err_state_table; ++ EVP_aes_128_cfb8; ++ FIPS_corrupt_rsa; ++ FIPS_selftest_des; ++ EVP_aes_128_cfb1; ++ EVP_aes_192_cfb8; ++ FIPS_mode_set; ++ FIPS_selftest_dsa; ++ EVP_aes_256_cfb8; ++ FIPS_allow_md5; ++ DES_ede3_cfb_encrypt; ++ EVP_des_ede3_cfb8; ++ FIPS_rand_seeded; ++ AES_cfbr_encrypt_block; ++ AES_cfb8_encrypt; ++ FIPS_rand_seed; ++ FIPS_corrupt_des; ++ EVP_aes_192_cfb1; ++ FIPS_selftest_aes; ++ FIPS_set_prng_key; ++ EVP_des_cfb8; ++ FIPS_corrupt_dsa; ++ FIPS_test_mode; ++ FIPS_rand_method; ++ EVP_aes_256_cfb1; ++ ERR_load_FIPS_strings; ++ FIPS_corrupt_aes; ++ FIPS_selftest_sha1; ++ FIPS_selftest_rsa; ++ FIPS_corrupt_sha1; ++ EVP_des_cfb1; ++ FIPS_dsa_check; ++ AES_cfb1_encrypt; ++ EVP_des_ede3_cfb1; ++ FIPS_rand_check; ++ FIPS_md5_allowed; ++ FIPS_mode; ++ FIPS_selftest_failed; ++ sk_is_sorted; ++ X509_check_ca; ++ HMAC_CTX_set_flags; ++ d2i_PROXY_CERT_INFO_EXTENSION; ++ PROXY_POLICY_it; ++ PROXY_POLICY_it; ++ i2d_PROXY_POLICY; ++ i2d_PROXY_CERT_INFO_EXTENSION; ++ d2i_PROXY_POLICY; ++ PROXY_CERT_INFO_EXTENSION_new; ++ PROXY_CERT_INFO_EXTENSION_free; ++ PROXY_CERT_INFO_EXTENSION_it; ++ PROXY_CERT_INFO_EXTENSION_it; ++ PROXY_POLICY_free; ++ PROXY_POLICY_new; ++ BN_MONT_CTX_set_locked; ++ FIPS_selftest_rng; ++ EVP_sha384; ++ EVP_sha512; ++ EVP_sha224; ++ EVP_sha256; ++ FIPS_selftest_hmac; ++ FIPS_corrupt_rng; ++ BN_mod_exp_mont_consttime; ++ RSA_X931_hash_id; ++ RSA_padding_check_X931; ++ RSA_verify_PKCS1_PSS; ++ RSA_padding_add_X931; ++ RSA_padding_add_PKCS1_PSS; ++ PKCS1_MGF1; ++ BN_X931_generate_Xpq; ++ RSA_X931_generate_key; ++ BN_X931_derive_prime; ++ BN_X931_generate_prime; ++ RSA_X931_derive; ++ BIO_new_dgram; ++ BN_get0_nist_prime_384; ++ ERR_set_mark; ++ X509_STORE_CTX_set0_crls; ++ ENGINE_set_STORE; ++ ENGINE_register_ECDSA; ++ STORE_meth_set_list_start_fn; ++ STORE_method_set_list_start_function; ++ BN_BLINDING_invert_ex; ++ NAME_CONSTRAINTS_free; ++ STORE_ATTR_INFO_set_number; ++ BN_BLINDING_get_thread_id; ++ X509_STORE_CTX_set0_param; ++ POLICY_MAPPING_it; ++ POLICY_MAPPING_it; ++ STORE_parse_attrs_start; ++ POLICY_CONSTRAINTS_free; ++ EVP_PKEY_add1_attr_by_NID; ++ BN_nist_mod_192; ++ EC_GROUP_get_trinomial_basis; ++ STORE_set_method; ++ GENERAL_SUBTREE_free; ++ NAME_CONSTRAINTS_it; ++ NAME_CONSTRAINTS_it; ++ ECDH_get_default_method; ++ PKCS12_add_safe; ++ EC_KEY_new_by_curve_name; ++ STORE_meth_get_update_store_fn; ++ STORE_method_get_update_store_function; ++ ENGINE_register_ECDH; ++ SHA512_Update; ++ i2d_ECPrivateKey; ++ BN_get0_nist_prime_192; ++ STORE_modify_certificate; ++ EC_POINT_set_affine_coordinates_GF2m; ++ EC_POINT_set_affine_coords_GF2m; ++ BN_GF2m_mod_exp_arr; ++ STORE_ATTR_INFO_modify_number; ++ X509_keyid_get0; ++ ENGINE_load_gmp; ++ pitem_new; ++ BN_GF2m_mod_mul_arr; ++ STORE_list_public_key_endp; ++ o2i_ECPublicKey; ++ EC_KEY_copy; ++ BIO_dump_fp; ++ X509_policy_node_get0_parent; ++ EC_GROUP_check_discriminant; ++ i2o_ECPublicKey; ++ EC_KEY_precompute_mult; ++ a2i_IPADDRESS; ++ STORE_meth_set_initialise_fn; ++ STORE_method_set_initialise_function; ++ X509_STORE_CTX_set_depth; ++ X509_VERIFY_PARAM_inherit; ++ EC_POINT_point2bn; ++ STORE_ATTR_INFO_set_dn; ++ X509_policy_tree_get0_policies; ++ EC_GROUP_new_curve_GF2m; ++ STORE_destroy_method; ++ ENGINE_unregister_STORE; ++ EVP_PKEY_get1_EC_KEY; ++ STORE_ATTR_INFO_get0_number; ++ ENGINE_get_default_ECDH; ++ EC_KEY_get_conv_form; ++ ASN1_OCTET_STRING_NDEF_it; ++ ASN1_OCTET_STRING_NDEF_it; ++ STORE_delete_public_key; ++ STORE_get_public_key; ++ STORE_modify_arbitrary; ++ ENGINE_get_static_state; ++ pqueue_iterator; ++ ECDSA_SIG_new; ++ OPENSSL_DIR_end; ++ BN_GF2m_mod_sqr; ++ EC_POINT_bn2point; ++ X509_VERIFY_PARAM_set_depth; ++ EC_KEY_set_asn1_flag; ++ STORE_get_method; ++ EC_KEY_get_key_method_data; ++ ECDSA_sign_ex; ++ STORE_parse_attrs_end; ++ EC_GROUP_get_point_conversion_form; ++ EC_GROUP_get_point_conv_form; ++ STORE_method_set_store_function; ++ STORE_ATTR_INFO_in; ++ PEM_read_bio_ECPKParameters; ++ EC_GROUP_get_pentanomial_basis; ++ EVP_PKEY_add1_attr_by_txt; ++ BN_BLINDING_set_flags; ++ X509_VERIFY_PARAM_set1_policies; ++ X509_VERIFY_PARAM_set1_name; ++ X509_VERIFY_PARAM_set_purpose; ++ STORE_get_number; ++ ECDSA_sign_setup; ++ BN_GF2m_mod_solve_quad_arr; ++ EC_KEY_up_ref; ++ POLICY_MAPPING_free; ++ BN_GF2m_mod_div; ++ X509_VERIFY_PARAM_set_flags; ++ EC_KEY_free; ++ STORE_meth_set_list_next_fn; ++ STORE_method_set_list_next_function; ++ PEM_write_bio_ECPrivateKey; ++ d2i_EC_PUBKEY; ++ STORE_meth_get_generate_fn; ++ STORE_method_get_generate_function; ++ STORE_meth_set_list_end_fn; ++ STORE_method_set_list_end_function; ++ pqueue_print; ++ EC_GROUP_have_precompute_mult; ++ EC_KEY_print_fp; ++ BN_GF2m_mod_arr; ++ PEM_write_bio_X509_CERT_PAIR; ++ EVP_PKEY_cmp; ++ X509_policy_level_node_count; ++ STORE_new_engine; ++ STORE_list_public_key_start; ++ X509_VERIFY_PARAM_new; ++ ECDH_get_ex_data; ++ EVP_PKEY_get_attr; ++ ECDSA_do_sign; ++ ENGINE_unregister_ECDH; ++ ECDH_OpenSSL; ++ EC_KEY_set_conv_form; ++ EC_POINT_dup; ++ GENERAL_SUBTREE_new; ++ STORE_list_crl_endp; ++ EC_get_builtin_curves; ++ X509_policy_node_get0_qualifiers; ++ X509_pcy_node_get0_qualifiers; ++ STORE_list_crl_end; ++ EVP_PKEY_set1_EC_KEY; ++ BN_GF2m_mod_sqrt_arr; ++ i2d_ECPrivateKey_bio; ++ ECPKParameters_print_fp; ++ pqueue_find; ++ ECDSA_SIG_free; ++ PEM_write_bio_ECPKParameters; ++ STORE_method_set_ctrl_function; ++ STORE_list_public_key_end; ++ EC_KEY_set_private_key; ++ pqueue_peek; ++ STORE_get_arbitrary; ++ STORE_store_crl; ++ X509_policy_node_get0_policy; ++ PKCS12_add_safes; ++ BN_BLINDING_convert_ex; ++ X509_policy_tree_free; ++ OPENSSL_ia32cap_loc; ++ BN_GF2m_poly2arr; ++ STORE_ctrl; ++ STORE_ATTR_INFO_compare; ++ BN_get0_nist_prime_224; ++ i2d_ECParameters; ++ i2d_ECPKParameters; ++ BN_GENCB_call; ++ d2i_ECPKParameters; ++ STORE_meth_set_generate_fn; ++ STORE_method_set_generate_function; ++ ENGINE_set_ECDH; ++ NAME_CONSTRAINTS_new; ++ SHA256_Init; ++ EC_KEY_get0_public_key; ++ PEM_write_bio_EC_PUBKEY; ++ STORE_ATTR_INFO_set_cstr; ++ STORE_list_crl_next; ++ STORE_ATTR_INFO_in_range; ++ ECParameters_print; ++ STORE_meth_set_delete_fn; ++ STORE_method_set_delete_function; ++ STORE_list_certificate_next; ++ ASN1_generate_nconf; ++ BUF_memdup; ++ BN_GF2m_mod_mul; ++ STORE_meth_get_list_next_fn; ++ STORE_method_get_list_next_function; ++ STORE_ATTR_INFO_get0_dn; ++ STORE_list_private_key_next; ++ EC_GROUP_set_seed; ++ X509_VERIFY_PARAM_set_trust; ++ STORE_ATTR_INFO_free; ++ STORE_get_private_key; ++ EVP_PKEY_get_attr_count; ++ STORE_ATTR_INFO_new; ++ EC_GROUP_get_curve_GF2m; ++ STORE_meth_set_revoke_fn; ++ STORE_method_set_revoke_function; ++ STORE_store_number; ++ BN_is_prime_ex; ++ STORE_revoke_public_key; ++ X509_STORE_CTX_get0_param; ++ STORE_delete_arbitrary; ++ PEM_read_X509_CERT_PAIR; ++ X509_STORE_set_depth; ++ ECDSA_get_ex_data; ++ SHA224; ++ BIO_dump_indent_fp; ++ EC_KEY_set_group; ++ BUF_strndup; ++ STORE_list_certificate_start; ++ BN_GF2m_mod; ++ X509_REQ_check_private_key; ++ EC_GROUP_get_seed_len; ++ ERR_load_STORE_strings; ++ PEM_read_bio_EC_PUBKEY; ++ STORE_list_private_key_end; ++ i2d_EC_PUBKEY; ++ ECDSA_get_default_method; ++ ASN1_put_eoc; ++ X509_STORE_CTX_get_explicit_policy; ++ X509_STORE_CTX_get_expl_policy; ++ X509_VERIFY_PARAM_table_cleanup; ++ STORE_modify_private_key; ++ X509_VERIFY_PARAM_free; ++ EC_METHOD_get_field_type; ++ EC_GFp_nist_method; ++ STORE_meth_set_modify_fn; ++ STORE_method_set_modify_function; ++ STORE_parse_attrs_next; ++ ENGINE_load_padlock; ++ EC_GROUP_set_curve_name; ++ X509_CERT_PAIR_it; ++ X509_CERT_PAIR_it; ++ STORE_meth_get_revoke_fn; ++ STORE_method_get_revoke_function; ++ STORE_method_set_get_function; ++ STORE_modify_number; ++ STORE_method_get_store_function; ++ STORE_store_private_key; ++ BN_GF2m_mod_sqr_arr; ++ RSA_setup_blinding; ++ BIO_s_datagram; ++ STORE_Memory; ++ sk_find_ex; ++ EC_GROUP_set_curve_GF2m; ++ ENGINE_set_default_ECDSA; ++ POLICY_CONSTRAINTS_new; ++ BN_GF2m_mod_sqrt; ++ ECDH_set_default_method; ++ EC_KEY_generate_key; ++ SHA384_Update; ++ BN_GF2m_arr2poly; ++ STORE_method_get_get_function; ++ STORE_meth_set_cleanup_fn; ++ STORE_method_set_cleanup_function; ++ EC_GROUP_check; ++ d2i_ECPrivateKey_bio; ++ EC_KEY_insert_key_method_data; ++ STORE_meth_get_lock_store_fn; ++ STORE_method_get_lock_store_function; ++ X509_VERIFY_PARAM_get_depth; ++ SHA224_Final; ++ STORE_meth_set_update_store_fn; ++ STORE_method_set_update_store_function; ++ SHA224_Update; ++ d2i_ECPrivateKey; ++ ASN1_item_ndef_i2d; ++ STORE_delete_private_key; ++ ERR_pop_to_mark; ++ ENGINE_register_all_STORE; ++ X509_policy_level_get0_node; ++ i2d_PKCS7_NDEF; ++ EC_GROUP_get_degree; ++ ASN1_generate_v3; ++ STORE_ATTR_INFO_modify_cstr; ++ X509_policy_tree_level_count; ++ BN_GF2m_add; ++ EC_KEY_get0_group; ++ STORE_generate_crl; ++ STORE_store_public_key; ++ X509_CERT_PAIR_free; ++ STORE_revoke_private_key; ++ BN_nist_mod_224; ++ SHA512_Final; ++ STORE_ATTR_INFO_modify_dn; ++ STORE_meth_get_initialise_fn; ++ STORE_method_get_initialise_function; ++ STORE_delete_number; ++ i2d_EC_PUBKEY_bio; ++ BIO_dgram_non_fatal_error; ++ EC_GROUP_get_asn1_flag; ++ STORE_ATTR_INFO_in_ex; ++ STORE_list_crl_start; ++ ECDH_get_ex_new_index; ++ STORE_meth_get_modify_fn; ++ STORE_method_get_modify_function; ++ v2i_ASN1_BIT_STRING; ++ STORE_store_certificate; ++ OBJ_bsearch_ex; ++ X509_STORE_CTX_set_default; ++ STORE_ATTR_INFO_set_sha1str; ++ BN_GF2m_mod_inv; ++ BN_GF2m_mod_exp; ++ STORE_modify_public_key; ++ STORE_meth_get_list_start_fn; ++ STORE_method_get_list_start_function; ++ EC_GROUP_get0_seed; ++ STORE_store_arbitrary; ++ STORE_meth_set_unlock_store_fn; ++ STORE_method_set_unlock_store_function; ++ BN_GF2m_mod_div_arr; ++ ENGINE_set_ECDSA; ++ STORE_create_method; ++ ECPKParameters_print; ++ EC_KEY_get0_private_key; ++ PEM_write_EC_PUBKEY; ++ X509_VERIFY_PARAM_set1; ++ ECDH_set_method; ++ v2i_GENERAL_NAME_ex; ++ ECDH_set_ex_data; ++ STORE_generate_key; ++ BN_nist_mod_521; ++ X509_policy_tree_get0_level; ++ EC_GROUP_set_point_conversion_form; ++ EC_GROUP_set_point_conv_form; ++ PEM_read_EC_PUBKEY; ++ i2d_ECDSA_SIG; ++ ECDSA_OpenSSL; ++ STORE_delete_crl; ++ EC_KEY_get_enc_flags; ++ ASN1_const_check_infinite_end; ++ EVP_PKEY_delete_attr; ++ ECDSA_set_default_method; ++ EC_POINT_set_compressed_coordinates_GF2m; ++ EC_POINT_set_compr_coords_GF2m; ++ EC_GROUP_cmp; ++ STORE_revoke_certificate; ++ BN_get0_nist_prime_256; ++ STORE_meth_get_delete_fn; ++ STORE_method_get_delete_function; ++ SHA224_Init; ++ PEM_read_ECPrivateKey; ++ SHA512_Init; ++ STORE_parse_attrs_endp; ++ BN_set_negative; ++ ERR_load_ECDSA_strings; ++ EC_GROUP_get_basis_type; ++ STORE_list_public_key_next; ++ i2v_ASN1_BIT_STRING; ++ STORE_OBJECT_free; ++ BN_nist_mod_384; ++ i2d_X509_CERT_PAIR; ++ PEM_write_ECPKParameters; ++ ECDH_compute_key; ++ STORE_ATTR_INFO_get0_sha1str; ++ ENGINE_register_all_ECDH; ++ pqueue_pop; ++ STORE_ATTR_INFO_get0_cstr; ++ POLICY_CONSTRAINTS_it; ++ POLICY_CONSTRAINTS_it; ++ STORE_get_ex_new_index; ++ EVP_PKEY_get_attr_by_OBJ; ++ X509_VERIFY_PARAM_add0_policy; ++ BN_GF2m_mod_solve_quad; ++ SHA256; ++ i2d_ECPrivateKey_fp; ++ X509_policy_tree_get0_user_policies; ++ X509_pcy_tree_get0_usr_policies; ++ OPENSSL_DIR_read; ++ ENGINE_register_all_ECDSA; ++ X509_VERIFY_PARAM_lookup; ++ EC_POINT_get_affine_coordinates_GF2m; ++ EC_POINT_get_affine_coords_GF2m; ++ EC_GROUP_dup; ++ ENGINE_get_default_ECDSA; ++ EC_KEY_new; ++ SHA256_Transform; ++ EC_KEY_set_enc_flags; ++ ECDSA_verify; ++ EC_POINT_point2hex; ++ ENGINE_get_STORE; ++ SHA512; ++ STORE_get_certificate; ++ ECDSA_do_sign_ex; ++ ECDSA_do_verify; ++ d2i_ECPrivateKey_fp; ++ STORE_delete_certificate; ++ SHA512_Transform; ++ X509_STORE_set1_param; ++ STORE_method_get_ctrl_function; ++ STORE_free; ++ PEM_write_ECPrivateKey; ++ STORE_meth_get_unlock_store_fn; ++ STORE_method_get_unlock_store_function; ++ STORE_get_ex_data; ++ EC_KEY_set_public_key; ++ PEM_read_ECPKParameters; ++ X509_CERT_PAIR_new; ++ ENGINE_register_STORE; ++ RSA_generate_key_ex; ++ DSA_generate_parameters_ex; ++ ECParameters_print_fp; ++ X509V3_NAME_from_section; ++ EVP_PKEY_add1_attr; ++ STORE_modify_crl; ++ STORE_list_private_key_start; ++ POLICY_MAPPINGS_it; ++ POLICY_MAPPINGS_it; ++ GENERAL_SUBTREE_it; ++ GENERAL_SUBTREE_it; ++ EC_GROUP_get_curve_name; ++ PEM_write_X509_CERT_PAIR; ++ BIO_dump_indent_cb; ++ d2i_X509_CERT_PAIR; ++ STORE_list_private_key_endp; ++ asn1_const_Finish; ++ i2d_EC_PUBKEY_fp; ++ BN_nist_mod_256; ++ X509_VERIFY_PARAM_add0_table; ++ pqueue_free; ++ BN_BLINDING_create_param; ++ ECDSA_size; ++ d2i_EC_PUBKEY_bio; ++ BN_get0_nist_prime_521; ++ STORE_ATTR_INFO_modify_sha1str; ++ BN_generate_prime_ex; ++ EC_GROUP_new_by_curve_name; ++ SHA256_Final; ++ DH_generate_parameters_ex; ++ PEM_read_bio_ECPrivateKey; ++ STORE_meth_get_cleanup_fn; ++ STORE_method_get_cleanup_function; ++ ENGINE_get_ECDH; ++ d2i_ECDSA_SIG; ++ BN_is_prime_fasttest_ex; ++ ECDSA_sign; ++ X509_policy_check; ++ EVP_PKEY_get_attr_by_NID; ++ STORE_set_ex_data; ++ ENGINE_get_ECDSA; ++ EVP_ecdsa; ++ BN_BLINDING_get_flags; ++ PKCS12_add_cert; ++ STORE_OBJECT_new; ++ ERR_load_ECDH_strings; ++ EC_KEY_dup; ++ EVP_CIPHER_CTX_rand_key; ++ ECDSA_set_method; ++ a2i_IPADDRESS_NC; ++ d2i_ECParameters; ++ STORE_list_certificate_end; ++ STORE_get_crl; ++ X509_POLICY_NODE_print; ++ SHA384_Init; ++ EC_GF2m_simple_method; ++ ECDSA_set_ex_data; ++ SHA384_Final; ++ PKCS7_set_digest; ++ EC_KEY_print; ++ STORE_meth_set_lock_store_fn; ++ STORE_method_set_lock_store_function; ++ ECDSA_get_ex_new_index; ++ SHA384; ++ POLICY_MAPPING_new; ++ STORE_list_certificate_endp; ++ X509_STORE_CTX_get0_policy_tree; ++ EC_GROUP_set_asn1_flag; ++ EC_KEY_check_key; ++ d2i_EC_PUBKEY_fp; ++ PKCS7_set0_type_other; ++ PEM_read_bio_X509_CERT_PAIR; ++ pqueue_next; ++ STORE_meth_get_list_end_fn; ++ STORE_method_get_list_end_function; ++ EVP_PKEY_add1_attr_by_OBJ; ++ X509_VERIFY_PARAM_set_time; ++ pqueue_new; ++ ENGINE_set_default_ECDH; ++ STORE_new_method; ++ PKCS12_add_key; ++ DSO_merge; ++ EC_POINT_hex2point; ++ BIO_dump_cb; ++ SHA256_Update; ++ pqueue_insert; ++ pitem_free; ++ BN_GF2m_mod_inv_arr; ++ ENGINE_unregister_ECDSA; ++ BN_BLINDING_set_thread_id; ++ get_rfc3526_prime_8192; ++ X509_VERIFY_PARAM_clear_flags; ++ get_rfc2409_prime_1024; ++ DH_check_pub_key; ++ get_rfc3526_prime_2048; ++ get_rfc3526_prime_6144; ++ get_rfc3526_prime_1536; ++ get_rfc3526_prime_3072; ++ get_rfc3526_prime_4096; ++ get_rfc2409_prime_768; ++ X509_VERIFY_PARAM_get_flags; ++ EVP_CIPHER_CTX_new; ++ EVP_CIPHER_CTX_free; ++ Camellia_cbc_encrypt; ++ Camellia_cfb128_encrypt; ++ Camellia_cfb1_encrypt; ++ Camellia_cfb8_encrypt; ++ Camellia_ctr128_encrypt; ++ Camellia_cfbr_encrypt_block; ++ Camellia_decrypt; ++ Camellia_ecb_encrypt; ++ Camellia_encrypt; ++ Camellia_ofb128_encrypt; ++ Camellia_set_key; ++ EVP_camellia_128_cbc; ++ EVP_camellia_128_cfb128; ++ EVP_camellia_128_cfb1; ++ EVP_camellia_128_cfb8; ++ EVP_camellia_128_ecb; ++ EVP_camellia_128_ofb; ++ EVP_camellia_192_cbc; ++ EVP_camellia_192_cfb128; ++ EVP_camellia_192_cfb1; ++ EVP_camellia_192_cfb8; ++ EVP_camellia_192_ecb; ++ EVP_camellia_192_ofb; ++ EVP_camellia_256_cbc; ++ EVP_camellia_256_cfb128; ++ EVP_camellia_256_cfb1; ++ EVP_camellia_256_cfb8; ++ EVP_camellia_256_ecb; ++ EVP_camellia_256_ofb; ++ a2i_ipadd; ++ ASIdentifiers_free; ++ i2d_ASIdOrRange; ++ EVP_CIPHER_block_size; ++ v3_asid_is_canonical; ++ IPAddressChoice_free; ++ EVP_CIPHER_CTX_set_app_data; ++ BIO_set_callback_arg; ++ v3_addr_add_prefix; ++ IPAddressOrRange_it; ++ IPAddressOrRange_it; ++ BIO_set_flags; ++ ASIdentifiers_it; ++ ASIdentifiers_it; ++ v3_addr_get_range; ++ BIO_method_type; ++ v3_addr_inherits; ++ IPAddressChoice_it; ++ IPAddressChoice_it; ++ AES_ige_encrypt; ++ v3_addr_add_range; ++ EVP_CIPHER_CTX_nid; ++ d2i_ASRange; ++ v3_addr_add_inherit; ++ v3_asid_add_id_or_range; ++ v3_addr_validate_resource_set; ++ EVP_CIPHER_iv_length; ++ EVP_MD_type; ++ v3_asid_canonize; ++ IPAddressRange_free; ++ v3_asid_add_inherit; ++ EVP_CIPHER_CTX_key_length; ++ IPAddressRange_new; ++ ASIdOrRange_new; ++ EVP_MD_size; ++ EVP_MD_CTX_test_flags; ++ BIO_clear_flags; ++ i2d_ASRange; ++ IPAddressRange_it; ++ IPAddressRange_it; ++ IPAddressChoice_new; ++ ASIdentifierChoice_new; ++ ASRange_free; ++ EVP_MD_pkey_type; ++ EVP_MD_CTX_clear_flags; ++ IPAddressFamily_free; ++ i2d_IPAddressFamily; ++ IPAddressOrRange_new; ++ EVP_CIPHER_flags; ++ v3_asid_validate_resource_set; ++ d2i_IPAddressRange; ++ AES_bi_ige_encrypt; ++ BIO_get_callback; ++ IPAddressOrRange_free; ++ v3_addr_subset; ++ d2i_IPAddressFamily; ++ v3_asid_subset; ++ BIO_test_flags; ++ i2d_ASIdentifierChoice; ++ ASRange_it; ++ ASRange_it; ++ d2i_ASIdentifiers; ++ ASRange_new; ++ d2i_IPAddressChoice; ++ v3_addr_get_afi; ++ EVP_CIPHER_key_length; ++ EVP_Cipher; ++ i2d_IPAddressOrRange; ++ ASIdOrRange_it; ++ ASIdOrRange_it; ++ EVP_CIPHER_nid; ++ i2d_IPAddressChoice; ++ EVP_CIPHER_CTX_block_size; ++ ASIdentifiers_new; ++ v3_addr_validate_path; ++ IPAddressFamily_new; ++ EVP_MD_CTX_set_flags; ++ v3_addr_is_canonical; ++ i2d_IPAddressRange; ++ IPAddressFamily_it; ++ IPAddressFamily_it; ++ v3_asid_inherits; ++ EVP_CIPHER_CTX_cipher; ++ EVP_CIPHER_CTX_get_app_data; ++ EVP_MD_block_size; ++ EVP_CIPHER_CTX_flags; ++ v3_asid_validate_path; ++ d2i_IPAddressOrRange; ++ v3_addr_canonize; ++ ASIdentifierChoice_it; ++ ASIdentifierChoice_it; ++ EVP_MD_CTX_md; ++ d2i_ASIdentifierChoice; ++ BIO_method_name; ++ EVP_CIPHER_CTX_iv_length; ++ ASIdOrRange_free; ++ ASIdentifierChoice_free; ++ BIO_get_callback_arg; ++ BIO_set_callback; ++ d2i_ASIdOrRange; ++ i2d_ASIdentifiers; ++ SEED_decrypt; ++ SEED_encrypt; ++ SEED_cbc_encrypt; ++ EVP_seed_ofb; ++ SEED_cfb128_encrypt; ++ SEED_ofb128_encrypt; ++ EVP_seed_cbc; ++ SEED_ecb_encrypt; ++ EVP_seed_ecb; ++ SEED_set_key; ++ EVP_seed_cfb128; ++ X509_EXTENSIONS_it; ++ X509_EXTENSIONS_it; ++ X509_get1_ocsp; ++ OCSP_REQ_CTX_free; ++ i2d_X509_EXTENSIONS; ++ OCSP_sendreq_nbio; ++ OCSP_sendreq_new; ++ d2i_X509_EXTENSIONS; ++ X509_ALGORS_it; ++ X509_ALGORS_it; ++ X509_ALGOR_get0; ++ X509_ALGOR_set0; ++ AES_unwrap_key; ++ AES_wrap_key; ++ X509at_get0_data_by_OBJ; ++ ASN1_TYPE_set1; ++ ASN1_STRING_set0; ++ i2d_X509_ALGORS; ++ BIO_f_zlib; ++ COMP_zlib_cleanup; ++ d2i_X509_ALGORS; ++ CMS_ReceiptRequest_free; ++ PEM_write_CMS; ++ CMS_add0_CertificateChoices; ++ CMS_unsigned_add1_attr_by_OBJ; ++ ERR_load_CMS_strings; ++ CMS_sign_receipt; ++ i2d_CMS_ContentInfo; ++ CMS_signed_delete_attr; ++ d2i_CMS_bio; ++ CMS_unsigned_get_attr_by_NID; ++ CMS_verify; ++ SMIME_read_CMS; ++ CMS_decrypt_set1_key; ++ CMS_SignerInfo_get0_algs; ++ CMS_add1_cert; ++ CMS_set_detached; ++ CMS_encrypt; ++ CMS_EnvelopedData_create; ++ CMS_uncompress; ++ CMS_add0_crl; ++ CMS_SignerInfo_verify_content; ++ CMS_unsigned_get0_data_by_OBJ; ++ PEM_write_bio_CMS; ++ CMS_unsigned_get_attr; ++ CMS_RecipientInfo_ktri_cert_cmp; ++ CMS_RecipientInfo_ktri_get0_algs; ++ CMS_RecipInfo_ktri_get0_algs; ++ CMS_ContentInfo_free; ++ CMS_final; ++ CMS_add_simple_smimecap; ++ CMS_SignerInfo_verify; ++ CMS_data; ++ CMS_ContentInfo_it; ++ CMS_ContentInfo_it; ++ d2i_CMS_ReceiptRequest; ++ CMS_compress; ++ CMS_digest_create; ++ CMS_SignerInfo_cert_cmp; ++ CMS_SignerInfo_sign; ++ CMS_data_create; ++ i2d_CMS_bio; ++ CMS_EncryptedData_set1_key; ++ CMS_decrypt; ++ int_smime_write_ASN1; ++ CMS_unsigned_delete_attr; ++ CMS_unsigned_get_attr_count; ++ CMS_add_smimecap; ++ PEM_read_CMS; ++ CMS_signed_get_attr_by_OBJ; ++ d2i_CMS_ContentInfo; ++ CMS_add_standard_smimecap; ++ CMS_ContentInfo_new; ++ CMS_RecipientInfo_type; ++ CMS_get0_type; ++ CMS_is_detached; ++ CMS_sign; ++ CMS_signed_add1_attr; ++ CMS_unsigned_get_attr_by_OBJ; ++ SMIME_write_CMS; ++ CMS_EncryptedData_decrypt; ++ CMS_get0_RecipientInfos; ++ CMS_add0_RevocationInfoChoice; ++ CMS_decrypt_set1_pkey; ++ CMS_SignerInfo_set1_signer_cert; ++ CMS_get0_signers; ++ CMS_ReceiptRequest_get0_values; ++ CMS_signed_get0_data_by_OBJ; ++ CMS_get0_SignerInfos; ++ CMS_add0_cert; ++ CMS_EncryptedData_encrypt; ++ CMS_digest_verify; ++ CMS_set1_signers_certs; ++ CMS_signed_get_attr; ++ CMS_RecipientInfo_set0_key; ++ CMS_SignedData_init; ++ CMS_RecipientInfo_kekri_get0_id; ++ CMS_verify_receipt; ++ CMS_ReceiptRequest_it; ++ CMS_ReceiptRequest_it; ++ PEM_read_bio_CMS; ++ CMS_get1_crls; ++ CMS_add0_recipient_key; ++ SMIME_read_ASN1; ++ CMS_ReceiptRequest_new; ++ CMS_get0_content; ++ CMS_get1_ReceiptRequest; ++ CMS_signed_add1_attr_by_OBJ; ++ CMS_RecipientInfo_kekri_id_cmp; ++ CMS_add1_ReceiptRequest; ++ CMS_SignerInfo_get0_signer_id; ++ CMS_unsigned_add1_attr_by_NID; ++ CMS_unsigned_add1_attr; ++ CMS_signed_get_attr_by_NID; ++ CMS_get1_certs; ++ CMS_signed_add1_attr_by_NID; ++ CMS_unsigned_add1_attr_by_txt; ++ CMS_dataFinal; ++ CMS_RecipientInfo_ktri_get0_signer_id; ++ CMS_RecipInfo_ktri_get0_sigr_id; ++ i2d_CMS_ReceiptRequest; ++ CMS_add1_recipient_cert; ++ CMS_dataInit; ++ CMS_signed_add1_attr_by_txt; ++ CMS_RecipientInfo_decrypt; ++ CMS_signed_get_attr_count; ++ CMS_get0_eContentType; ++ CMS_set1_eContentType; ++ CMS_ReceiptRequest_create0; ++ CMS_add1_signer; ++ CMS_RecipientInfo_set0_pkey; ++ ENGINE_set_load_ssl_client_cert_function; ++ ENGINE_set_ld_ssl_clnt_cert_fn; ++ ENGINE_get_ssl_client_cert_function; ++ ENGINE_get_ssl_client_cert_fn; ++ ENGINE_load_ssl_client_cert; ++ ENGINE_load_capi; ++ OPENSSL_isservice; ++ FIPS_dsa_sig_decode; ++ EVP_CIPHER_CTX_clear_flags; ++ FIPS_rand_status; ++ FIPS_rand_set_key; ++ CRYPTO_set_mem_info_functions; ++ RSA_X931_generate_key_ex; ++ int_ERR_set_state_func; ++ int_EVP_MD_set_engine_callbacks; ++ int_CRYPTO_set_do_dynlock_callback; ++ FIPS_rng_stick; ++ EVP_CIPHER_CTX_set_flags; ++ BN_X931_generate_prime_ex; ++ FIPS_selftest_check; ++ FIPS_rand_set_dt; ++ CRYPTO_dbg_pop_info; ++ FIPS_dsa_free; ++ RSA_X931_derive_ex; ++ FIPS_rsa_new; ++ FIPS_rand_bytes; ++ fips_cipher_test; ++ EVP_CIPHER_CTX_test_flags; ++ CRYPTO_malloc_debug_init; ++ CRYPTO_dbg_push_info; ++ FIPS_corrupt_rsa_keygen; ++ FIPS_dh_new; ++ FIPS_corrupt_dsa_keygen; ++ FIPS_dh_free; ++ fips_pkey_signature_test; ++ EVP_add_alg_module; ++ int_RAND_init_engine_callbacks; ++ int_EVP_CIPHER_set_engine_callbacks; ++ int_EVP_MD_init_engine_callbacks; ++ FIPS_rand_test_mode; ++ FIPS_rand_reset; ++ FIPS_dsa_new; ++ int_RAND_set_callbacks; ++ BN_X931_derive_prime_ex; ++ int_ERR_lib_init; ++ int_EVP_CIPHER_init_engine_callbacks; ++ FIPS_rsa_free; ++ FIPS_dsa_sig_encode; ++ CRYPTO_dbg_remove_all_info; ++ OPENSSL_init; ++ CRYPTO_strdup; ++ JPAKE_STEP3A_process; ++ JPAKE_STEP1_release; ++ JPAKE_get_shared_key; ++ JPAKE_STEP3B_init; ++ JPAKE_STEP1_generate; ++ JPAKE_STEP1_init; ++ JPAKE_STEP3B_process; ++ JPAKE_STEP2_generate; ++ JPAKE_CTX_new; ++ JPAKE_CTX_free; ++ JPAKE_STEP3B_release; ++ JPAKE_STEP3A_release; ++ JPAKE_STEP2_process; ++ JPAKE_STEP3B_generate; ++ JPAKE_STEP1_process; ++ JPAKE_STEP3A_generate; ++ JPAKE_STEP2_release; ++ JPAKE_STEP3A_init; ++ ERR_load_JPAKE_strings; ++ JPAKE_STEP2_init; ++ pqueue_size; ++ i2d_TS_ACCURACY; ++ i2d_TS_MSG_IMPRINT_fp; ++ i2d_TS_MSG_IMPRINT; ++ EVP_PKEY_print_public; ++ EVP_PKEY_CTX_new; ++ i2d_TS_TST_INFO; ++ EVP_PKEY_asn1_find; ++ DSO_METHOD_beos; ++ TS_CONF_load_cert; ++ TS_REQ_get_ext; ++ EVP_PKEY_sign_init; ++ ASN1_item_print; ++ TS_TST_INFO_set_nonce; ++ TS_RESP_dup; ++ ENGINE_register_pkey_meths; ++ EVP_PKEY_asn1_add0; ++ PKCS7_add0_attrib_signing_time; ++ i2d_TS_TST_INFO_fp; ++ BIO_asn1_get_prefix; ++ TS_TST_INFO_set_time; ++ EVP_PKEY_meth_set_decrypt; ++ EVP_PKEY_set_type_str; ++ EVP_PKEY_CTX_get_keygen_info; ++ TS_REQ_set_policy_id; ++ d2i_TS_RESP_fp; ++ ENGINE_get_pkey_asn1_meth_engine; ++ ENGINE_get_pkey_asn1_meth_eng; ++ WHIRLPOOL_Init; ++ TS_RESP_set_status_info; ++ EVP_PKEY_keygen; ++ EVP_DigestSignInit; ++ TS_ACCURACY_set_millis; ++ TS_REQ_dup; ++ GENERAL_NAME_dup; ++ ASN1_SEQUENCE_ANY_it; ++ ASN1_SEQUENCE_ANY_it; ++ WHIRLPOOL; ++ X509_STORE_get1_crls; ++ ENGINE_get_pkey_asn1_meth; ++ EVP_PKEY_asn1_new; ++ BIO_new_NDEF; ++ ENGINE_get_pkey_meth; ++ TS_MSG_IMPRINT_set_algo; ++ i2d_TS_TST_INFO_bio; ++ TS_TST_INFO_set_ordering; ++ TS_TST_INFO_get_ext_by_OBJ; ++ CRYPTO_THREADID_set_pointer; ++ TS_CONF_get_tsa_section; ++ SMIME_write_ASN1; ++ TS_RESP_CTX_set_signer_key; ++ EVP_PKEY_encrypt_old; ++ EVP_PKEY_encrypt_init; ++ CRYPTO_THREADID_cpy; ++ ASN1_PCTX_get_cert_flags; ++ i2d_ESS_SIGNING_CERT; ++ TS_CONF_load_key; ++ i2d_ASN1_SEQUENCE_ANY; ++ d2i_TS_MSG_IMPRINT_bio; ++ EVP_PKEY_asn1_set_public; ++ b2i_PublicKey_bio; ++ BIO_asn1_set_prefix; ++ EVP_PKEY_new_mac_key; ++ BIO_new_CMS; ++ CRYPTO_THREADID_cmp; ++ TS_REQ_ext_free; ++ EVP_PKEY_asn1_set_free; ++ EVP_PKEY_get0_asn1; ++ d2i_NETSCAPE_X509; ++ EVP_PKEY_verify_recover_init; ++ EVP_PKEY_CTX_set_data; ++ EVP_PKEY_keygen_init; ++ TS_RESP_CTX_set_status_info; ++ TS_MSG_IMPRINT_get_algo; ++ TS_REQ_print_bio; ++ EVP_PKEY_CTX_ctrl_str; ++ EVP_PKEY_get_default_digest_nid; ++ PEM_write_bio_PKCS7_stream; ++ TS_MSG_IMPRINT_print_bio; ++ BN_asc2bn; ++ TS_REQ_get_policy_id; ++ ENGINE_set_default_pkey_asn1_meths; ++ ENGINE_set_def_pkey_asn1_meths; ++ d2i_TS_ACCURACY; ++ DSO_global_lookup; ++ TS_CONF_set_tsa_name; ++ i2d_ASN1_SET_ANY; ++ ENGINE_load_gost; ++ WHIRLPOOL_BitUpdate; ++ ASN1_PCTX_get_flags; ++ TS_TST_INFO_get_ext_by_NID; ++ TS_RESP_new; ++ ESS_CERT_ID_dup; ++ TS_STATUS_INFO_dup; ++ TS_REQ_delete_ext; ++ EVP_DigestVerifyFinal; ++ EVP_PKEY_print_params; ++ i2d_CMS_bio_stream; ++ TS_REQ_get_msg_imprint; ++ OBJ_find_sigid_by_algs; ++ TS_TST_INFO_get_serial; ++ TS_REQ_get_nonce; ++ X509_PUBKEY_set0_param; ++ EVP_PKEY_CTX_set0_keygen_info; ++ DIST_POINT_set_dpname; ++ i2d_ISSUING_DIST_POINT; ++ ASN1_SET_ANY_it; ++ ASN1_SET_ANY_it; ++ EVP_PKEY_CTX_get_data; ++ TS_STATUS_INFO_print_bio; ++ EVP_PKEY_derive_init; ++ d2i_TS_TST_INFO; ++ EVP_PKEY_asn1_add_alias; ++ d2i_TS_RESP_bio; ++ OTHERNAME_cmp; ++ GENERAL_NAME_set0_value; ++ PKCS7_RECIP_INFO_get0_alg; ++ TS_RESP_CTX_new; ++ TS_RESP_set_tst_info; ++ PKCS7_final; ++ EVP_PKEY_base_id; ++ TS_RESP_CTX_set_signer_cert; ++ TS_REQ_set_msg_imprint; ++ EVP_PKEY_CTX_ctrl; ++ TS_CONF_set_digests; ++ d2i_TS_MSG_IMPRINT; ++ EVP_PKEY_meth_set_ctrl; ++ TS_REQ_get_ext_by_NID; ++ PKCS5_pbe_set0_algor; ++ BN_BLINDING_thread_id; ++ TS_ACCURACY_new; ++ X509_CRL_METHOD_free; ++ ASN1_PCTX_get_nm_flags; ++ EVP_PKEY_meth_set_sign; ++ CRYPTO_THREADID_current; ++ EVP_PKEY_decrypt_init; ++ NETSCAPE_X509_free; ++ i2b_PVK_bio; ++ EVP_PKEY_print_private; ++ GENERAL_NAME_get0_value; ++ b2i_PVK_bio; ++ ASN1_UTCTIME_adj; ++ TS_TST_INFO_new; ++ EVP_MD_do_all_sorted; ++ TS_CONF_set_default_engine; ++ TS_ACCURACY_set_seconds; ++ TS_TST_INFO_get_time; ++ PKCS8_pkey_get0; ++ EVP_PKEY_asn1_get0; ++ OBJ_add_sigid; ++ PKCS7_SIGNER_INFO_sign; ++ EVP_PKEY_paramgen_init; ++ EVP_PKEY_sign; ++ OBJ_sigid_free; ++ EVP_PKEY_meth_set_init; ++ d2i_ESS_ISSUER_SERIAL; ++ ISSUING_DIST_POINT_new; ++ ASN1_TIME_adj; ++ TS_OBJ_print_bio; ++ EVP_PKEY_meth_set_verify_recover; ++ EVP_PKEY_meth_set_vrfy_recover; ++ TS_RESP_get_status_info; ++ CMS_stream; ++ EVP_PKEY_CTX_set_cb; ++ PKCS7_to_TS_TST_INFO; ++ ASN1_PCTX_get_oid_flags; ++ TS_TST_INFO_add_ext; ++ EVP_PKEY_meth_set_derive; ++ i2d_TS_RESP_fp; ++ i2d_TS_MSG_IMPRINT_bio; ++ TS_RESP_CTX_set_accuracy; ++ TS_REQ_set_nonce; ++ ESS_CERT_ID_new; ++ ENGINE_pkey_asn1_find_str; ++ TS_REQ_get_ext_count; ++ BUF_reverse; ++ TS_TST_INFO_print_bio; ++ d2i_ISSUING_DIST_POINT; ++ ENGINE_get_pkey_meths; ++ i2b_PrivateKey_bio; ++ i2d_TS_RESP; ++ b2i_PublicKey; ++ TS_VERIFY_CTX_cleanup; ++ TS_STATUS_INFO_free; ++ TS_RESP_verify_token; ++ OBJ_bsearch_ex_; ++ ASN1_bn_print; ++ EVP_PKEY_asn1_get_count; ++ ENGINE_register_pkey_asn1_meths; ++ ASN1_PCTX_set_nm_flags; ++ EVP_DigestVerifyInit; ++ ENGINE_set_default_pkey_meths; ++ TS_TST_INFO_get_policy_id; ++ TS_REQ_get_cert_req; ++ X509_CRL_set_meth_data; ++ PKCS8_pkey_set0; ++ ASN1_STRING_copy; ++ d2i_TS_TST_INFO_fp; ++ X509_CRL_match; ++ EVP_PKEY_asn1_set_private; ++ TS_TST_INFO_get_ext_d2i; ++ TS_RESP_CTX_add_policy; ++ d2i_TS_RESP; ++ TS_CONF_load_certs; ++ TS_TST_INFO_get_msg_imprint; ++ ERR_load_TS_strings; ++ TS_TST_INFO_get_version; ++ EVP_PKEY_CTX_dup; ++ EVP_PKEY_meth_set_verify; ++ i2b_PublicKey_bio; ++ TS_CONF_set_certs; ++ EVP_PKEY_asn1_get0_info; ++ TS_VERIFY_CTX_free; ++ TS_REQ_get_ext_by_critical; ++ TS_RESP_CTX_set_serial_cb; ++ X509_CRL_get_meth_data; ++ TS_RESP_CTX_set_time_cb; ++ TS_MSG_IMPRINT_get_msg; ++ TS_TST_INFO_ext_free; ++ TS_REQ_get_version; ++ TS_REQ_add_ext; ++ EVP_PKEY_CTX_set_app_data; ++ OBJ_bsearch_; ++ EVP_PKEY_meth_set_verifyctx; ++ i2d_PKCS7_bio_stream; ++ CRYPTO_THREADID_set_numeric; ++ PKCS7_sign_add_signer; ++ d2i_TS_TST_INFO_bio; ++ TS_TST_INFO_get_ordering; ++ TS_RESP_print_bio; ++ TS_TST_INFO_get_exts; ++ HMAC_CTX_copy; ++ PKCS5_pbe2_set_iv; ++ ENGINE_get_pkey_asn1_meths; ++ b2i_PrivateKey; ++ EVP_PKEY_CTX_get_app_data; ++ TS_REQ_set_cert_req; ++ CRYPTO_THREADID_set_callback; ++ TS_CONF_set_serial; ++ TS_TST_INFO_free; ++ d2i_TS_REQ_fp; ++ TS_RESP_verify_response; ++ i2d_ESS_ISSUER_SERIAL; ++ TS_ACCURACY_get_seconds; ++ EVP_CIPHER_do_all; ++ b2i_PrivateKey_bio; ++ OCSP_CERTID_dup; ++ X509_PUBKEY_get0_param; ++ TS_MSG_IMPRINT_dup; ++ PKCS7_print_ctx; ++ i2d_TS_REQ_bio; ++ EVP_whirlpool; ++ EVP_PKEY_asn1_set_param; ++ EVP_PKEY_meth_set_encrypt; ++ ASN1_PCTX_set_flags; ++ i2d_ESS_CERT_ID; ++ TS_VERIFY_CTX_new; ++ TS_RESP_CTX_set_extension_cb; ++ ENGINE_register_all_pkey_meths; ++ TS_RESP_CTX_set_status_info_cond; ++ TS_RESP_CTX_set_stat_info_cond; ++ EVP_PKEY_verify; ++ WHIRLPOOL_Final; ++ X509_CRL_METHOD_new; ++ EVP_DigestSignFinal; ++ TS_RESP_CTX_set_def_policy; ++ NETSCAPE_X509_it; ++ NETSCAPE_X509_it; ++ TS_RESP_create_response; ++ PKCS7_SIGNER_INFO_get0_algs; ++ TS_TST_INFO_get_nonce; ++ EVP_PKEY_decrypt_old; ++ TS_TST_INFO_set_policy_id; ++ TS_CONF_set_ess_cert_id_chain; ++ EVP_PKEY_CTX_get0_pkey; ++ d2i_TS_REQ; ++ EVP_PKEY_asn1_find_str; ++ BIO_f_asn1; ++ ESS_SIGNING_CERT_new; ++ EVP_PBE_find; ++ X509_CRL_get0_by_cert; ++ EVP_PKEY_derive; ++ i2d_TS_REQ; ++ TS_TST_INFO_delete_ext; ++ ESS_ISSUER_SERIAL_free; ++ ASN1_PCTX_set_str_flags; ++ ENGINE_get_pkey_asn1_meth_str; ++ TS_CONF_set_signer_key; ++ TS_ACCURACY_get_millis; ++ TS_RESP_get_token; ++ TS_ACCURACY_dup; ++ ENGINE_register_all_pkey_asn1_meths; ++ ENGINE_reg_all_pkey_asn1_meths; ++ X509_CRL_set_default_method; ++ CRYPTO_THREADID_hash; ++ CMS_ContentInfo_print_ctx; ++ TS_RESP_free; ++ ISSUING_DIST_POINT_free; ++ ESS_ISSUER_SERIAL_new; ++ CMS_add1_crl; ++ PKCS7_add1_attrib_digest; ++ TS_RESP_CTX_add_md; ++ TS_TST_INFO_dup; ++ ENGINE_set_pkey_asn1_meths; ++ PEM_write_bio_Parameters; ++ TS_TST_INFO_get_accuracy; ++ X509_CRL_get0_by_serial; ++ TS_TST_INFO_set_version; ++ TS_RESP_CTX_get_tst_info; ++ TS_RESP_verify_signature; ++ CRYPTO_THREADID_get_callback; ++ TS_TST_INFO_get_tsa; ++ TS_STATUS_INFO_new; ++ EVP_PKEY_CTX_get_cb; ++ TS_REQ_get_ext_d2i; ++ GENERAL_NAME_set0_othername; ++ TS_TST_INFO_get_ext_count; ++ TS_RESP_CTX_get_request; ++ i2d_NETSCAPE_X509; ++ ENGINE_get_pkey_meth_engine; ++ EVP_PKEY_meth_set_signctx; ++ EVP_PKEY_asn1_copy; ++ ASN1_TYPE_cmp; ++ EVP_CIPHER_do_all_sorted; ++ EVP_PKEY_CTX_free; ++ ISSUING_DIST_POINT_it; ++ ISSUING_DIST_POINT_it; ++ d2i_TS_MSG_IMPRINT_fp; ++ X509_STORE_get1_certs; ++ EVP_PKEY_CTX_get_operation; ++ d2i_ESS_SIGNING_CERT; ++ TS_CONF_set_ordering; ++ EVP_PBE_alg_add_type; ++ TS_REQ_set_version; ++ EVP_PKEY_get0; ++ BIO_asn1_set_suffix; ++ i2d_TS_STATUS_INFO; ++ EVP_MD_do_all; ++ TS_TST_INFO_set_accuracy; ++ PKCS7_add_attrib_content_type; ++ ERR_remove_thread_state; ++ EVP_PKEY_meth_add0; ++ TS_TST_INFO_set_tsa; ++ EVP_PKEY_meth_new; ++ WHIRLPOOL_Update; ++ TS_CONF_set_accuracy; ++ ASN1_PCTX_set_oid_flags; ++ ESS_SIGNING_CERT_dup; ++ d2i_TS_REQ_bio; ++ X509_time_adj_ex; ++ TS_RESP_CTX_add_flags; ++ d2i_TS_STATUS_INFO; ++ TS_MSG_IMPRINT_set_msg; ++ BIO_asn1_get_suffix; ++ TS_REQ_free; ++ EVP_PKEY_meth_free; ++ TS_REQ_get_exts; ++ TS_RESP_CTX_set_clock_precision_digits; ++ TS_RESP_CTX_set_clk_prec_digits; ++ TS_RESP_CTX_add_failure_info; ++ i2d_TS_RESP_bio; ++ EVP_PKEY_CTX_get0_peerkey; ++ PEM_write_bio_CMS_stream; ++ TS_REQ_new; ++ TS_MSG_IMPRINT_new; ++ EVP_PKEY_meth_find; ++ EVP_PKEY_id; ++ TS_TST_INFO_set_serial; ++ a2i_GENERAL_NAME; ++ TS_CONF_set_crypto_device; ++ EVP_PKEY_verify_init; ++ TS_CONF_set_policies; ++ ASN1_PCTX_new; ++ ESS_CERT_ID_free; ++ ENGINE_unregister_pkey_meths; ++ TS_MSG_IMPRINT_free; ++ TS_VERIFY_CTX_init; ++ PKCS7_stream; ++ TS_RESP_CTX_set_certs; ++ TS_CONF_set_def_policy; ++ ASN1_GENERALIZEDTIME_adj; ++ NETSCAPE_X509_new; ++ TS_ACCURACY_free; ++ TS_RESP_get_tst_info; ++ EVP_PKEY_derive_set_peer; ++ PEM_read_bio_Parameters; ++ TS_CONF_set_clock_precision_digits; ++ TS_CONF_set_clk_prec_digits; ++ ESS_ISSUER_SERIAL_dup; ++ TS_ACCURACY_get_micros; ++ ASN1_PCTX_get_str_flags; ++ NAME_CONSTRAINTS_check; ++ ASN1_BIT_STRING_check; ++ X509_check_akid; ++ ENGINE_unregister_pkey_asn1_meths; ++ ENGINE_unreg_pkey_asn1_meths; ++ ASN1_PCTX_free; ++ PEM_write_bio_ASN1_stream; ++ i2d_ASN1_bio_stream; ++ TS_X509_ALGOR_print_bio; ++ EVP_PKEY_meth_set_cleanup; ++ EVP_PKEY_asn1_free; ++ ESS_SIGNING_CERT_free; ++ TS_TST_INFO_set_msg_imprint; ++ GENERAL_NAME_cmp; ++ d2i_ASN1_SET_ANY; ++ ENGINE_set_pkey_meths; ++ i2d_TS_REQ_fp; ++ d2i_ASN1_SEQUENCE_ANY; ++ GENERAL_NAME_get0_otherName; ++ d2i_ESS_CERT_ID; ++ OBJ_find_sigid_algs; ++ EVP_PKEY_meth_set_keygen; ++ PKCS5_PBKDF2_HMAC; ++ EVP_PKEY_paramgen; ++ EVP_PKEY_meth_set_paramgen; ++ BIO_new_PKCS7; ++ EVP_PKEY_verify_recover; ++ TS_ext_print_bio; ++ TS_ASN1_INTEGER_print_bio; ++ check_defer; ++ DSO_pathbyaddr; ++ EVP_PKEY_set_type; ++ TS_ACCURACY_set_micros; ++ TS_REQ_to_TS_VERIFY_CTX; ++ EVP_PKEY_meth_set_copy; ++ ASN1_PCTX_set_cert_flags; ++ TS_TST_INFO_get_ext; ++ EVP_PKEY_asn1_set_ctrl; ++ TS_TST_INFO_get_ext_by_critical; ++ EVP_PKEY_CTX_new_id; ++ TS_REQ_get_ext_by_OBJ; ++ TS_CONF_set_signer_cert; ++ X509_NAME_hash_old; ++ ASN1_TIME_set_string; ++ EVP_MD_flags; ++ TS_RESP_CTX_free; ++ DSAparams_dup; ++ DHparams_dup; ++ OCSP_REQ_CTX_add1_header; ++ OCSP_REQ_CTX_set1_req; ++ X509_STORE_set_verify_cb; ++ X509_STORE_CTX_get0_current_crl; ++ X509_STORE_CTX_get0_parent_ctx; ++ X509_STORE_CTX_get0_current_issuer; ++ X509_STORE_CTX_get0_cur_issuer; ++ X509_issuer_name_hash_old; ++ X509_subject_name_hash_old; ++ EVP_CIPHER_CTX_copy; ++ UI_method_get_prompt_constructor; ++ UI_method_get_prompt_constructr; ++ UI_method_set_prompt_constructor; ++ UI_method_set_prompt_constructr; ++ EVP_read_pw_string_min; ++ CRYPTO_cts128_encrypt; ++ CRYPTO_cts128_decrypt_block; ++ CRYPTO_cfb128_1_encrypt; ++ CRYPTO_cbc128_encrypt; ++ CRYPTO_ctr128_encrypt; ++ CRYPTO_ofb128_encrypt; ++ CRYPTO_cts128_decrypt; ++ CRYPTO_cts128_encrypt_block; ++ CRYPTO_cbc128_decrypt; ++ CRYPTO_cfb128_encrypt; ++ CRYPTO_cfb128_8_encrypt; ++ ++ local: ++ *; ++}; ++ ++ ++OPENSSL_1.0.1 { ++ global: ++ SSL_renegotiate_abbreviated; ++ TLSv1_1_method; ++ TLSv1_1_client_method; ++ TLSv1_1_server_method; ++ SSL_CTX_set_srp_client_pwd_callback; ++ SSL_CTX_set_srp_client_pwd_cb; ++ SSL_get_srp_g; ++ SSL_CTX_set_srp_username_callback; ++ SSL_CTX_set_srp_un_cb; ++ SSL_get_srp_userinfo; ++ SSL_set_srp_server_param; ++ SSL_set_srp_server_param_pw; ++ SSL_get_srp_N; ++ SSL_get_srp_username; ++ SSL_CTX_set_srp_password; ++ SSL_CTX_set_srp_strength; ++ SSL_CTX_set_srp_verify_param_callback; ++ SSL_CTX_set_srp_vfy_param_cb; ++ SSL_CTX_set_srp_cb_arg; ++ SSL_CTX_set_srp_username; ++ SSL_CTX_SRP_CTX_init; ++ SSL_SRP_CTX_init; ++ SRP_Calc_A_param; ++ SRP_generate_server_master_secret; ++ SRP_gen_server_master_secret; ++ SSL_CTX_SRP_CTX_free; ++ SRP_generate_client_master_secret; ++ SRP_gen_client_master_secret; ++ SSL_srp_server_param_with_username; ++ SSL_srp_server_param_with_un; ++ SSL_SRP_CTX_free; ++ SSL_set_debug; ++ SSL_SESSION_get0_peer; ++ TLSv1_2_client_method; ++ SSL_SESSION_set1_id_context; ++ TLSv1_2_server_method; ++ SSL_cache_hit; ++ SSL_get0_kssl_ctx; ++ SSL_set0_kssl_ctx; ++ SSL_set_state; ++ SSL_CIPHER_get_id; ++ TLSv1_2_method; ++ kssl_ctx_get0_client_princ; ++ SSL_export_keying_material; ++ SSL_set_tlsext_use_srtp; ++ SSL_CTX_set_next_protos_advertised_cb; ++ SSL_CTX_set_next_protos_adv_cb; ++ SSL_get0_next_proto_negotiated; ++ SSL_get_selected_srtp_profile; ++ SSL_CTX_set_tlsext_use_srtp; ++ SSL_select_next_proto; ++ SSL_get_srtp_profiles; ++ SSL_CTX_set_next_proto_select_cb; ++ SSL_CTX_set_next_proto_sel_cb; ++ SSL_SESSION_get_compress_id; ++ ++ SRP_VBASE_get_by_user; ++ SRP_Calc_server_key; ++ SRP_create_verifier; ++ SRP_create_verifier_BN; ++ SRP_Calc_u; ++ SRP_VBASE_free; ++ SRP_Calc_client_key; ++ SRP_get_default_gN; ++ SRP_Calc_x; ++ SRP_Calc_B; ++ SRP_VBASE_new; ++ SRP_check_known_gN_param; ++ SRP_Calc_A; ++ SRP_Verify_A_mod_N; ++ SRP_VBASE_init; ++ SRP_Verify_B_mod_N; ++ EC_KEY_set_public_key_affine_coordinates; ++ EC_KEY_set_pub_key_aff_coords; ++ EVP_aes_192_ctr; ++ EVP_PKEY_meth_get0_info; ++ EVP_PKEY_meth_copy; ++ ERR_add_error_vdata; ++ EVP_aes_128_ctr; ++ EVP_aes_256_ctr; ++ EC_GFp_nistp224_method; ++ EC_KEY_get_flags; ++ RSA_padding_add_PKCS1_PSS_mgf1; ++ EVP_aes_128_xts; ++ EVP_aes_256_xts; ++ EVP_aes_128_gcm; ++ EC_KEY_clear_flags; ++ EC_KEY_set_flags; ++ EVP_aes_256_ccm; ++ RSA_verify_PKCS1_PSS_mgf1; ++ EVP_aes_128_ccm; ++ EVP_aes_192_gcm; ++ X509_ALGOR_set_md; ++ RAND_init_fips; ++ EVP_aes_256_gcm; ++ EVP_aes_192_ccm; ++ CMAC_CTX_copy; ++ CMAC_CTX_free; ++ CMAC_CTX_get0_cipher_ctx; ++ CMAC_CTX_cleanup; ++ CMAC_Init; ++ CMAC_Update; ++ CMAC_resume; ++ CMAC_CTX_new; ++ CMAC_Final; ++ CRYPTO_ctr128_encrypt_ctr32; ++ CRYPTO_gcm128_release; ++ CRYPTO_ccm128_decrypt_ccm64; ++ CRYPTO_ccm128_encrypt; ++ CRYPTO_gcm128_encrypt; ++ CRYPTO_xts128_encrypt; ++ EVP_rc4_hmac_md5; ++ CRYPTO_nistcts128_decrypt_block; ++ CRYPTO_gcm128_setiv; ++ CRYPTO_nistcts128_encrypt; ++ EVP_aes_128_cbc_hmac_sha1; ++ CRYPTO_gcm128_tag; ++ CRYPTO_ccm128_encrypt_ccm64; ++ ENGINE_load_rdrand; ++ CRYPTO_ccm128_setiv; ++ CRYPTO_nistcts128_encrypt_block; ++ CRYPTO_gcm128_aad; ++ CRYPTO_ccm128_init; ++ CRYPTO_nistcts128_decrypt; ++ CRYPTO_gcm128_new; ++ CRYPTO_ccm128_tag; ++ CRYPTO_ccm128_decrypt; ++ CRYPTO_ccm128_aad; ++ CRYPTO_gcm128_init; ++ CRYPTO_gcm128_decrypt; ++ ENGINE_load_rsax; ++ CRYPTO_gcm128_decrypt_ctr32; ++ CRYPTO_gcm128_encrypt_ctr32; ++ CRYPTO_gcm128_finish; ++ EVP_aes_256_cbc_hmac_sha1; ++ PKCS5_pbkdf2_set; ++ CMS_add0_recipient_password; ++ CMS_decrypt_set1_password; ++ CMS_RecipientInfo_set0_password; ++ RAND_set_fips_drbg_type; ++ X509_REQ_sign_ctx; ++ RSA_PSS_PARAMS_new; ++ X509_CRL_sign_ctx; ++ X509_signature_dump; ++ d2i_RSA_PSS_PARAMS; ++ RSA_PSS_PARAMS_it; ++ RSA_PSS_PARAMS_it; ++ RSA_PSS_PARAMS_free; ++ X509_sign_ctx; ++ i2d_RSA_PSS_PARAMS; ++ ASN1_item_sign_ctx; ++ EC_GFp_nistp521_method; ++ EC_GFp_nistp256_method; ++ OPENSSL_stderr; ++ OPENSSL_cpuid_setup; ++ OPENSSL_showfatal; ++ BIO_new_dgram_sctp; ++ BIO_dgram_sctp_msg_waiting; ++ BIO_dgram_sctp_wait_for_dry; ++ BIO_s_datagram_sctp; ++ BIO_dgram_is_sctp; ++ BIO_dgram_sctp_notification_cb; ++} OPENSSL_1.0.0; ++ ++OPENSSL_1.0.1d { ++ global: ++ CRYPTO_memcmp; ++} OPENSSL_1.0.1; ++ +Index: openssl-1.0.1d/engines/openssl.ld +=================================================================== +--- /dev/null 1970-01-01 00:00:00.000000000 +0000 ++++ openssl-1.0.1d/engines/openssl.ld 2013-02-06 19:41:43.000000000 +0100 +@@ -0,0 +1,10 @@ ++OPENSSL_1.0.0 { ++ global: ++ bind_engine; ++ v_check; ++ OPENSSL_init; ++ OPENSSL_finish; ++ local: ++ *; ++}; ++ +Index: openssl-1.0.1d/engines/ccgost/openssl.ld +=================================================================== +--- /dev/null 1970-01-01 00:00:00.000000000 +0000 ++++ openssl-1.0.1d/engines/ccgost/openssl.ld 2013-02-06 19:41:43.000000000 +0100 +@@ -0,0 +1,10 @@ ++OPENSSL_1.0.0 { ++ global: ++ bind_engine; ++ v_check; ++ OPENSSL_init; ++ OPENSSL_finish; ++ local: ++ *; ++}; ++ diff --git a/meta-edison-distro/recipes-connectivity/openssl/openssl/engines-install-in-libdir-ssl.patch b/meta-edison-distro/recipes-connectivity/openssl/openssl/engines-install-in-libdir-ssl.patch new file mode 100644 index 0000000..d8a6f1a --- /dev/null +++ b/meta-edison-distro/recipes-connectivity/openssl/openssl/engines-install-in-libdir-ssl.patch @@ -0,0 +1,56 @@ +Upstream-Status: Inappropriate [configuration] + + +Index: openssl-1.0.0/engines/Makefile +=================================================================== +--- openssl-1.0.0.orig/engines/Makefile ++++ openssl-1.0.0/engines/Makefile +@@ -107,7 +107,7 @@ + @[ -n "$(INSTALLTOP)" ] # should be set by top Makefile... + @if [ -n "$(SHARED_LIBS)" ]; then \ + set -e; \ +- $(PERL) $(TOP)/util/mkdir-p.pl $(INSTALL_PREFIX)$(INSTALLTOP)/$(LIBDIR)/engines; \ ++ $(PERL) $(TOP)/util/mkdir-p.pl $(INSTALL_PREFIX)$(INSTALLTOP)/$(LIBDIR)/ssl/engines; \ + for l in $(LIBNAMES); do \ + ( echo installing $$l; \ + pfx=lib; \ +@@ -119,13 +119,13 @@ + *DSO_WIN32*) sfx="eay32.dll"; pfx=;; \ + *) sfx=".bad";; \ + esac; \ +- cp $$pfx$$l$$sfx $(INSTALL_PREFIX)$(INSTALLTOP)/$(LIBDIR)/engines/$$pfx$$l$$sfx.new; \ ++ cp $$pfx$$l$$sfx $(INSTALL_PREFIX)$(INSTALLTOP)/$(LIBDIR)/ssl/engines/$$pfx$$l$$sfx.new; \ + else \ + sfx=".so"; \ +- cp cyg$$l.dll $(INSTALL_PREFIX)$(INSTALLTOP)/$(LIBDIR)/engines/$$pfx$$l$$sfx.new; \ ++ cp cyg$$l.dll $(INSTALL_PREFIX)$(INSTALLTOP)/$(LIBDIR)/ssl/engines/$$pfx$$l$$sfx.new; \ + fi; \ +- chmod 555 $(INSTALL_PREFIX)$(INSTALLTOP)/$(LIBDIR)/engines/$$pfx$$l$$sfx.new; \ +- mv -f $(INSTALL_PREFIX)$(INSTALLTOP)/$(LIBDIR)/engines/$$pfx$$l$$sfx.new $(INSTALL_PREFIX)$(INSTALLTOP)/$(LIBDIR)/engines/$$pfx$$l$$sfx ); \ ++ chmod 555 $(INSTALL_PREFIX)$(INSTALLTOP)/$(LIBDIR)/ssl/engines/$$pfx$$l$$sfx.new; \ ++ mv -f $(INSTALL_PREFIX)$(INSTALLTOP)/$(LIBDIR)/ssl/engines/$$pfx$$l$$sfx.new $(INSTALL_PREFIX)$(INSTALLTOP)/$(LIBDIR)/ssl/engines/$$pfx$$l$$sfx ); \ + done; \ + fi + @target=install; $(RECURSIVE_MAKE) +Index: openssl-1.0.0/engines/ccgost/Makefile +=================================================================== +--- openssl-1.0.0.orig/engines/ccgost/Makefile ++++ openssl-1.0.0/engines/ccgost/Makefile +@@ -53,13 +53,13 @@ + *DSO_WIN32*) sfx="eay32.dll"; pfx=;; \ + *) sfx=".bad";; \ + esac; \ +- cp $${pfx}$(LIBNAME)$$sfx $(INSTALL_PREFIX)$(INSTALLTOP)/$(LIBDIR)/engines/$${pfx}$(LIBNAME)$$sfx.new; \ ++ cp $${pfx}$(LIBNAME)$$sfx $(INSTALL_PREFIX)$(INSTALLTOP)/$(LIBDIR)/ssl/engines/$${pfx}$(LIBNAME)$$sfx.new; \ + else \ + sfx=".so"; \ +- cp cyg$(LIBNAME).dll $(INSTALL_PREFIX)$(INSTALLTOP)/$(LIBDIR)/engines/$${pfx}$(LIBNAME)$$sfx.new; \ ++ cp cyg$(LIBNAME).dll $(INSTALL_PREFIX)$(INSTALLTOP)/$(LIBDIR)/ssl/engines/$${pfx}$(LIBNAME)$$sfx.new; \ + fi; \ +- chmod 555 $(INSTALL_PREFIX)$(INSTALLTOP)/$(LIBDIR)/engines/$${pfx}$(LIBNAME)$$sfx.new; \ +- mv -f $(INSTALL_PREFIX)$(INSTALLTOP)/$(LIBDIR)/engines/$${pfx}$(LIBNAME)$$sfx.new $(INSTALL_PREFIX)$(INSTALLTOP)/$(LIBDIR)/engines/$${pfx}$(LIBNAME)$$sfx; \ ++ chmod 555 $(INSTALL_PREFIX)$(INSTALLTOP)/$(LIBDIR)/ssl/engines/$${pfx}$(LIBNAME)$$sfx.new; \ ++ mv -f $(INSTALL_PREFIX)$(INSTALLTOP)/$(LIBDIR)/ssl/engines/$${pfx}$(LIBNAME)$$sfx.new $(INSTALL_PREFIX)$(INSTALLTOP)/$(LIBDIR)/ssl/engines/$${pfx}$(LIBNAME)$$sfx; \ + fi + + links: diff --git a/meta-edison-distro/recipes-connectivity/openssl/openssl/find.pl b/meta-edison-distro/recipes-connectivity/openssl/openssl/find.pl new file mode 100644 index 0000000..8e1b42c --- /dev/null +++ b/meta-edison-distro/recipes-connectivity/openssl/openssl/find.pl @@ -0,0 +1,54 @@ +warn "Legacy library @{[(caller(0))[6]]} will be removed from the Perl core distribution in the next major release. Please install it from the CPAN distribution Perl4::CoreLibs. It is being used at @{[(caller)[1]]}, line @{[(caller)[2]]}.\n"; + +# This library is deprecated and unmaintained. It is included for +# compatibility with Perl 4 scripts which may use it, but it will be +# removed in a future version of Perl. Please use the File::Find module +# instead. + +# Usage: +# require "find.pl"; +# +# &find('/foo','/bar'); +# +# sub wanted { ... } +# where wanted does whatever you want. $dir contains the +# current directory name, and $_ the current filename within +# that directory. $name contains "$dir/$_". You are cd'ed +# to $dir when the function is called. The function may +# set $prune to prune the tree. +# +# For example, +# +# find / -name .nfs\* -mtime +7 -exec rm -f {} \; -o -fstype nfs -prune +# +# corresponds to this +# +# sub wanted { +# /^\.nfs.*$/ && +# (($dev,$ino,$mode,$nlink,$uid,$gid) = lstat($_)) && +# int(-M _) > 7 && +# unlink($_) +# || +# ($nlink || (($dev,$ino,$mode,$nlink,$uid,$gid) = lstat($_))) && +# $dev < 0 && +# ($prune = 1); +# } +# +# Set the variable $dont_use_nlink if you're using AFS, since AFS cheats. + +use File::Find (); + +*name = *File::Find::name; +*prune = *File::Find::prune; +*dir = *File::Find::dir; +*topdir = *File::Find::topdir; +*topdev = *File::Find::topdev; +*topino = *File::Find::topino; +*topmode = *File::Find::topmode; +*topnlink = *File::Find::topnlink; + +sub find { + &File::Find::find(\&wanted, @_); +} + +1; diff --git a/meta-edison-distro/recipes-connectivity/openssl/openssl/fix-cipher-des-ede3-cfb1.patch b/meta-edison-distro/recipes-connectivity/openssl/openssl/fix-cipher-des-ede3-cfb1.patch new file mode 100644 index 0000000..f0e1778 --- /dev/null +++ b/meta-edison-distro/recipes-connectivity/openssl/openssl/fix-cipher-des-ede3-cfb1.patch @@ -0,0 +1,22 @@ +Upstream-Status: Submitted + +This patch adds the fix for one of the ciphers used in openssl, namely +the cipher des-ede3-cfb1. Complete bug log and patch is present here: +http://rt.openssl.org/Ticket/Display.html?id=2867 + +Signed-Off-By: Muhammad Shakeel <muhammad_shakeel@mentor.com> + +diff --git a/crypto/evp/e_des3.c b/crypto/evp/e_des3.c +index 3232cfe..df84922 100644 +=================================================================== +--- a/crypto/evp/e_des3.c ++++ b/crypto/evp/e_des3.c +@@ -173,7 +173,7 @@ static int des_ede3_cfb1_cipher(EVP_CIPHER_CTX *ctx, unsigned char *out, + size_t n; + unsigned char c[1],d[1]; + +- for(n=0 ; n < inl ; ++n) ++ for(n=0 ; n < inl*8 ; ++n) + { + c[0]=(in[n/8]&(1 << (7-n%8))) ? 0x80 : 0; + DES_ede3_cfb_encrypt(c,d,1,1, diff --git a/meta-edison-distro/recipes-connectivity/openssl/openssl/initial-aarch64-bits.patch b/meta-edison-distro/recipes-connectivity/openssl/openssl/initial-aarch64-bits.patch new file mode 100644 index 0000000..2185ff8 --- /dev/null +++ b/meta-edison-distro/recipes-connectivity/openssl/openssl/initial-aarch64-bits.patch @@ -0,0 +1,119 @@ +From: Andy Polyakov <appro@openssl.org> +Date: Sun, 13 Oct 2013 17:15:15 +0000 (+0200) +Subject: Initial aarch64 bits. +X-Git-Url: http://git.openssl.org/gitweb/?p=openssl.git;a=commitdiff_plain;h=039081b80977e2a5de84e1f88f8b4d025b559956 + +Initial aarch64 bits. +--- + crypto/bn/bn_lcl.h | 9 +++++++++ + crypto/md32_common.h | 18 ++++++++++++++++++ + crypto/modes/modes_lcl.h | 8 ++++++++ + crypto/sha/sha512.c | 13 +++++++++++++ + 4 files changed, 48 insertions(+) + +Index: openssl-1.0.1f/crypto/bn/bn_lcl.h +=================================================================== +--- openssl-1.0.1f.orig/crypto/bn/bn_lcl.h 2014-01-06 15:47:42.000000000 +0200 ++++ openssl-1.0.1f/crypto/bn/bn_lcl.h 2014-02-28 10:37:55.495979037 +0200 +@@ -300,6 +300,15 @@ + : "r"(a), "r"(b)); + # endif + # endif ++# elif defined(__aarch64__) && defined(SIXTY_FOUR_BIT_LONG) ++# if defined(__GNUC__) && __GNUC__>=2 ++# define BN_UMULT_HIGH(a,b) ({ \ ++ register BN_ULONG ret; \ ++ asm ("umulh %0,%1,%2" \ ++ : "=r"(ret) \ ++ : "r"(a), "r"(b)); \ ++ ret; }) ++# endif + # endif /* cpu */ + #endif /* OPENSSL_NO_ASM */ + +Index: openssl-1.0.1f/crypto/md32_common.h +=================================================================== +--- openssl-1.0.1f.orig/crypto/md32_common.h 2014-01-06 15:47:42.000000000 +0200 ++++ openssl-1.0.1f/crypto/md32_common.h 2014-02-28 10:39:21.751979107 +0200 +@@ -213,6 +213,24 @@ + asm ("bswapl %0":"=r"(r):"0"(r)); \ + *((unsigned int *)(c))=r; (c)+=4; r; }) + # endif ++# elif defined(__aarch64__) ++# if defined(__BYTE_ORDER__) ++# if defined(__ORDER_LITTLE_ENDIAN__) && __BYTE_ORDER__==__ORDER_LITTLE_ENDIAN__ ++# define HOST_c2l(c,l) ({ unsigned int r; \ ++ asm ("rev %w0,%w1" \ ++ :"=r"(r) \ ++ :"r"(*((const unsigned int *)(c))));\ ++ (c)+=4; (l)=r; }) ++# define HOST_l2c(l,c) ({ unsigned int r; \ ++ asm ("rev %w0,%w1" \ ++ :"=r"(r) \ ++ :"r"((unsigned int)(l)));\ ++ *((unsigned int *)(c))=r; (c)+=4; r; }) ++# elif defined(__ORDER_BIG_ENDIAN__) && __BYTE_ORDER__==__ORDER_BIG_ENDIAN__ ++# define HOST_c2l(c,l) ((l)=*((const unsigned int *)(c)), (c)+=4, (l)) ++# define HOST_l2c(l,c) (*((unsigned int *)(c))=(l), (c)+=4, (l)) ++# endif ++# endif + # endif + # endif + #endif +Index: openssl-1.0.1f/crypto/modes/modes_lcl.h +=================================================================== +--- openssl-1.0.1f.orig/crypto/modes/modes_lcl.h 2014-02-28 10:47:48.731979011 +0200 ++++ openssl-1.0.1f/crypto/modes/modes_lcl.h 2014-02-28 10:48:49.707978919 +0200 +@@ -29,6 +29,7 @@ + #if defined(__i386) || defined(__i386__) || \ + defined(__x86_64) || defined(__x86_64__) || \ + defined(_M_IX86) || defined(_M_AMD64) || defined(_M_X64) || \ ++ defined(__aarch64__) || \ + defined(__s390__) || defined(__s390x__) + # undef STRICT_ALIGNMENT + #endif +@@ -50,6 +51,13 @@ + # define BSWAP4(x) ({ u32 ret=(x); \ + asm ("bswapl %0" \ + : "+r"(ret)); ret; }) ++# elif defined(__aarch64__) ++# define BSWAP8(x) ({ u64 ret; \ ++ asm ("rev %0,%1" \ ++ : "=r"(ret) : "r"(x)); ret; }) ++# define BSWAP4(x) ({ u32 ret; \ ++ asm ("rev %w0,%w1" \ ++ : "=r"(ret) : "r"(x)); ret; }) + # elif (defined(__arm__) || defined(__arm)) && !defined(STRICT_ALIGNMENT) + # define BSWAP8(x) ({ u32 lo=(u64)(x)>>32,hi=(x); \ + asm ("rev %0,%0; rev %1,%1" \ +Index: openssl-1.0.1f/crypto/sha/sha512.c +=================================================================== +--- openssl-1.0.1f.orig/crypto/sha/sha512.c 2014-01-06 15:47:42.000000000 +0200 ++++ openssl-1.0.1f/crypto/sha/sha512.c 2014-02-28 10:52:14.579978981 +0200 +@@ -55,6 +55,7 @@ + #if defined(__i386) || defined(__i386__) || defined(_M_IX86) || \ + defined(__x86_64) || defined(_M_AMD64) || defined(_M_X64) || \ + defined(__s390__) || defined(__s390x__) || \ ++ defined(__aarch64__) || \ + defined(SHA512_ASM) + #define SHA512_BLOCK_CAN_MANAGE_UNALIGNED_DATA + #endif +@@ -347,6 +348,18 @@ + asm ("rotrdi %0,%1,%2" \ + : "=r"(ret) \ + : "r"(a),"K"(n)); ret; }) ++# elif defined(__aarch64__) ++# define ROTR(a,n) ({ SHA_LONG64 ret; \ ++ asm ("ror %0,%1,%2" \ ++ : "=r"(ret) \ ++ : "r"(a),"I"(n)); ret; }) ++# if defined(__BYTE_ORDER__) && defined(__ORDER_LITTLE_ENDIAN__) && \ ++ __BYTE_ORDER__==__ORDER_LITTLE_ENDIAN__ ++# define PULL64(x) ({ SHA_LONG64 ret; \ ++ asm ("rev %0,%1" \ ++ : "=r"(ret) \ ++ : "r"(*((const SHA_LONG64 *)(&(x))))); ret; }) ++# endif + # endif + # elif defined(_MSC_VER) + # if defined(_WIN64) /* applies to both IA-64 and AMD64 */ diff --git a/meta-edison-distro/recipes-connectivity/openssl/openssl/oe-ldflags.patch b/meta-edison-distro/recipes-connectivity/openssl/openssl/oe-ldflags.patch new file mode 100644 index 0000000..292e13d --- /dev/null +++ b/meta-edison-distro/recipes-connectivity/openssl/openssl/oe-ldflags.patch @@ -0,0 +1,24 @@ +Upstream-Status: Inappropriate [open-embedded] + +Index: openssl-1.0.0/Makefile.shared +=================================================================== +--- openssl-1.0.0.orig/Makefile.shared ++++ openssl-1.0.0/Makefile.shared +@@ -92,7 +92,7 @@ + LINK_APP= \ + ( $(SET_X); \ + LIBDEPS="$${LIBDEPS:-$(LIBDEPS)}"; \ +- LDCMD="$${LDCMD:-$(CC)}"; LDFLAGS="$${LDFLAGS:-$(CFLAGS)}"; \ ++ LDCMD="$${LDCMD:-$(CC)}"; LDFLAGS="$(OE_LDFLAGS) $${LDFLAGS:-$(CFLAGS)}"; \ + LIBPATH=`for x in $$LIBDEPS; do echo $$x; done | sed -e 's/^ *-L//;t' -e d | uniq`; \ + LIBPATH=`echo $$LIBPATH | sed -e 's/ /:/g'`; \ + LD_LIBRARY_PATH=$$LIBPATH:$$LD_LIBRARY_PATH \ +@@ -102,7 +102,7 @@ + ( $(SET_X); \ + LIBDEPS="$${LIBDEPS:-$(LIBDEPS)}"; \ + SHAREDCMD="$${SHAREDCMD:-$(CC)}"; \ +- SHAREDFLAGS="$${SHAREDFLAGS:-$(CFLAGS) $(SHARED_LDFLAGS)}"; \ ++ SHAREDFLAGS="$(OE_LDFLAGS) $${SHAREDFLAGS:-$(CFLAGS) $(SHARED_LDFLAGS)}"; \ + LIBPATH=`for x in $$LIBDEPS; do echo $$x; done | sed -e 's/^ *-L//;t' -e d | uniq`; \ + LIBPATH=`echo $$LIBPATH | sed -e 's/ /:/g'`; \ + LD_LIBRARY_PATH=$$LIBPATH:$$LD_LIBRARY_PATH \ diff --git a/meta-edison-distro/recipes-connectivity/openssl/openssl/openssl-1.0.1e-cve-2014-0195.patch b/meta-edison-distro/recipes-connectivity/openssl/openssl/openssl-1.0.1e-cve-2014-0195.patch new file mode 100644 index 0000000..0c43919 --- /dev/null +++ b/meta-edison-distro/recipes-connectivity/openssl/openssl/openssl-1.0.1e-cve-2014-0195.patch @@ -0,0 +1,40 @@ +commit 208d54db20d58c9a5e45e856a0650caadd7d9612 +Author: Dr. Stephen Henson <steve@openssl.org> +Date: Tue May 13 18:48:31 2014 +0100 + + Fix for CVE-2014-0195 + + A buffer overrun attack can be triggered by sending invalid DTLS fragments + to an OpenSSL DTLS client or server. This is potentially exploitable to + run arbitrary code on a vulnerable client or server. + + Fixed by adding consistency check for DTLS fragments. + + Thanks to Jüri Aedla for reporting this issue. + +Patch borrowed from Fedora +Upstream-Status: Backport +Signed-off-by: Paul Eggleton <paul.eggleton@linux.intel.com> + +diff --git a/ssl/d1_both.c b/ssl/d1_both.c +index 2e8cf68..07f67f8 100644 +--- a/ssl/d1_both.c ++++ b/ssl/d1_both.c +@@ -627,7 +627,16 @@ dtls1_reassemble_fragment(SSL *s, struct hm_header_st* msg_hdr, int *ok) + frag->msg_header.frag_off = 0; + } + else ++ { + frag = (hm_fragment*) item->data; ++ if (frag->msg_header.msg_len != msg_hdr->msg_len) ++ { ++ item = NULL; ++ frag = NULL; ++ goto err; ++ } ++ } ++ + + /* If message is already reassembled, this must be a + * retransmit and can be dropped. + diff --git a/meta-edison-distro/recipes-connectivity/openssl/openssl/openssl-1.0.1e-cve-2014-0198.patch b/meta-edison-distro/recipes-connectivity/openssl/openssl/openssl-1.0.1e-cve-2014-0198.patch new file mode 100644 index 0000000..12dcfb7 --- /dev/null +++ b/meta-edison-distro/recipes-connectivity/openssl/openssl/openssl-1.0.1e-cve-2014-0198.patch @@ -0,0 +1,38 @@ +From: Matt Caswell <matt@openssl.org> +Date: Sun, 11 May 2014 23:38:37 +0000 (+0100) +Subject: Fixed NULL pointer dereference. See PR#3321 +X-Git-Url: https://git.openssl.org/gitweb/?p=openssl.git;a=commitdiff_plain;h=b107586 + +Fixed NULL pointer dereference. See PR#3321 + +Patch borrowed from Fedora +Upstream-Status: Backport +Signed-off-by: Paul Eggleton <paul.eggleton@linux.intel.com> + +--- + +diff --git a/ssl/s3_pkt.c b/ssl/s3_pkt.c +index 40eb0dd..d961d12 100644 +--- a/ssl/s3_pkt.c ++++ b/ssl/s3_pkt.c +@@ -657,9 +657,6 @@ static int do_ssl3_write(SSL *s, int type, const unsigned char *buf, + SSL3_BUFFER *wb=&(s->s3->wbuf); + SSL_SESSION *sess; + +- if (wb->buf == NULL) +- if (!ssl3_setup_write_buffer(s)) +- return -1; + + /* first check if there is a SSL3_BUFFER still being written + * out. This will happen with non blocking IO */ +@@ -675,6 +672,10 @@ static int do_ssl3_write(SSL *s, int type, const unsigned char *buf, + /* if it went, fall through and send more stuff */ + } + ++ if (wb->buf == NULL) ++ if (!ssl3_setup_write_buffer(s)) ++ return -1; ++ + if (len == 0 && !create_empty_fragment) + return 0; + diff --git a/meta-edison-distro/recipes-connectivity/openssl/openssl/openssl-1.0.1e-cve-2014-0221.patch b/meta-edison-distro/recipes-connectivity/openssl/openssl/openssl-1.0.1e-cve-2014-0221.patch new file mode 100644 index 0000000..bf730a8 --- /dev/null +++ b/meta-edison-distro/recipes-connectivity/openssl/openssl/openssl-1.0.1e-cve-2014-0221.patch @@ -0,0 +1,38 @@ +commit d30e582446b027868cdabd0994681643682045a4 +Author: Dr. Stephen Henson <steve@openssl.org> +Date: Fri May 16 13:00:45 2014 +0100 + + Fix CVE-2014-0221 + + Unnecessary recursion when receiving a DTLS hello request can be used to + crash a DTLS client. Fixed by handling DTLS hello request without recursion. + + Thanks to Imre Rad (Search-Lab Ltd.) for discovering this issue. + +Patch borrowed from Fedora +Upstream-Status: Backport +Signed-off-by: Paul Eggleton <paul.eggleton@linux.intel.com> + +diff --git a/ssl/d1_both.c b/ssl/d1_both.c +index 07f67f8..4c2fd03 100644 +--- a/ssl/d1_both.c ++++ b/ssl/d1_both.c +@@ -793,6 +793,7 @@ dtls1_get_message_fragment(SSL *s, int st1, int stn, long max, int *ok) + int i,al; + struct hm_header_st msg_hdr; + ++ redo: + /* see if we have the required fragment already */ + if ((frag_len = dtls1_retrieve_buffered_fragment(s,max,ok)) || *ok) + { +@@ -851,8 +852,7 @@ dtls1_get_message_fragment(SSL *s, int st1, int stn, long max, int *ok) + s->msg_callback_arg); + + s->init_num = 0; +- return dtls1_get_message_fragment(s, st1, stn, +- max, ok); ++ goto redo; + } + else /* Incorrectly formated Hello request */ + { + diff --git a/meta-edison-distro/recipes-connectivity/openssl/openssl/openssl-1.0.1e-cve-2014-0224.patch b/meta-edison-distro/recipes-connectivity/openssl/openssl/openssl-1.0.1e-cve-2014-0224.patch new file mode 100644 index 0000000..0ed1d12 --- /dev/null +++ b/meta-edison-distro/recipes-connectivity/openssl/openssl/openssl-1.0.1e-cve-2014-0224.patch @@ -0,0 +1,103 @@ +Fix for CVE-2014-0224 + +Only accept change cipher spec when it is expected instead of at any +time. This prevents premature setting of session keys before the master +secret is determined which an attacker could use as a MITM attack. + +Thanks to KIKUCHI Masashi (Lepidum Co. Ltd.) for reporting this issue +and providing the initial fix this patch is based on. + + +Patch borrowed from Fedora +Upstream-Status: Backport +Signed-off-by: Paul Eggleton <paul.eggleton@linux.intel.com> + + +diff -up openssl-1.0.1e/ssl/ssl3.h.keying-mitm openssl-1.0.1e/ssl/ssl3.h +--- openssl-1.0.1e/ssl/ssl3.h.keying-mitm 2014-06-02 19:48:04.518100562 +0200 ++++ openssl-1.0.1e/ssl/ssl3.h 2014-06-02 19:48:04.642103429 +0200 +@@ -388,6 +388,7 @@ typedef struct ssl3_buffer_st + #define TLS1_FLAGS_TLS_PADDING_BUG 0x0008 + #define TLS1_FLAGS_SKIP_CERT_VERIFY 0x0010 + #define TLS1_FLAGS_KEEP_HANDSHAKE 0x0020 ++#define SSL3_FLAGS_CCS_OK 0x0080 + + /* SSL3_FLAGS_SGC_RESTART_DONE is set when we + * restart a handshake because of MS SGC and so prevents us +diff -up openssl-1.0.1e/ssl/s3_clnt.c.keying-mitm openssl-1.0.1e/ssl/s3_clnt.c +--- openssl-1.0.1e/ssl/s3_clnt.c.keying-mitm 2013-02-11 16:26:04.000000000 +0100 ++++ openssl-1.0.1e/ssl/s3_clnt.c 2014-06-02 19:49:57.042701985 +0200 +@@ -559,6 +559,7 @@ int ssl3_connect(SSL *s) + case SSL3_ST_CR_FINISHED_A: + case SSL3_ST_CR_FINISHED_B: + ++ s->s3->flags |= SSL3_FLAGS_CCS_OK; + ret=ssl3_get_finished(s,SSL3_ST_CR_FINISHED_A, + SSL3_ST_CR_FINISHED_B); + if (ret <= 0) goto end; +@@ -916,6 +917,7 @@ int ssl3_get_server_hello(SSL *s) + SSLerr(SSL_F_SSL3_GET_SERVER_HELLO,SSL_R_ATTEMPT_TO_REUSE_SESSION_IN_DIFFERENT_CONTEXT); + goto f_err; + } ++ s->s3->flags |= SSL3_FLAGS_CCS_OK; + s->hit=1; + } + else /* a miss or crap from the other end */ +diff -up openssl-1.0.1e/ssl/s3_pkt.c.keying-mitm openssl-1.0.1e/ssl/s3_pkt.c +--- openssl-1.0.1e/ssl/s3_pkt.c.keying-mitm 2014-06-02 19:48:04.640103383 +0200 ++++ openssl-1.0.1e/ssl/s3_pkt.c 2014-06-02 19:48:04.643103452 +0200 +@@ -1298,6 +1298,15 @@ start: + goto f_err; + } + ++ if (!(s->s3->flags & SSL3_FLAGS_CCS_OK)) ++ { ++ al=SSL_AD_UNEXPECTED_MESSAGE; ++ SSLerr(SSL_F_SSL3_READ_BYTES,SSL_R_CCS_RECEIVED_EARLY); ++ goto f_err; ++ } ++ ++ s->s3->flags &= ~SSL3_FLAGS_CCS_OK; ++ + rr->length=0; + + if (s->msg_callback) +@@ -1432,7 +1441,7 @@ int ssl3_do_change_cipher_spec(SSL *s) + + if (s->s3->tmp.key_block == NULL) + { +- if (s->session == NULL) ++ if (s->session == NULL || s->session->master_key_length == 0) + { + /* might happen if dtls1_read_bytes() calls this */ + SSLerr(SSL_F_SSL3_DO_CHANGE_CIPHER_SPEC,SSL_R_CCS_RECEIVED_EARLY); +diff -up openssl-1.0.1e/ssl/s3_srvr.c.keying-mitm openssl-1.0.1e/ssl/s3_srvr.c +--- openssl-1.0.1e/ssl/s3_srvr.c.keying-mitm 2014-06-02 19:48:04.630103151 +0200 ++++ openssl-1.0.1e/ssl/s3_srvr.c 2014-06-02 19:48:04.643103452 +0200 +@@ -673,6 +673,7 @@ int ssl3_accept(SSL *s) + case SSL3_ST_SR_CERT_VRFY_A: + case SSL3_ST_SR_CERT_VRFY_B: + ++ s->s3->flags |= SSL3_FLAGS_CCS_OK; + /* we should decide if we expected this one */ + ret=ssl3_get_cert_verify(s); + if (ret <= 0) goto end; +@@ -700,6 +701,7 @@ int ssl3_accept(SSL *s) + + case SSL3_ST_SR_FINISHED_A: + case SSL3_ST_SR_FINISHED_B: ++ s->s3->flags |= SSL3_FLAGS_CCS_OK; + ret=ssl3_get_finished(s,SSL3_ST_SR_FINISHED_A, + SSL3_ST_SR_FINISHED_B); + if (ret <= 0) goto end; +@@ -770,7 +772,10 @@ int ssl3_accept(SSL *s) + s->s3->tmp.next_state=SSL3_ST_SR_FINISHED_A; + #else + if (s->s3->next_proto_neg_seen) ++ { ++ s->s3->flags |= SSL3_FLAGS_CCS_OK; + s->s3->tmp.next_state=SSL3_ST_SR_NEXT_PROTO_A; ++ } + else + s->s3->tmp.next_state=SSL3_ST_SR_FINISHED_A; + #endif diff --git a/meta-edison-distro/recipes-connectivity/openssl/openssl/openssl-1.0.1e-cve-2014-3470.patch b/meta-edison-distro/recipes-connectivity/openssl/openssl/openssl-1.0.1e-cve-2014-3470.patch new file mode 100644 index 0000000..025727f --- /dev/null +++ b/meta-edison-distro/recipes-connectivity/openssl/openssl/openssl-1.0.1e-cve-2014-3470.patch @@ -0,0 +1,31 @@ +commit 4ad43d511f6cf064c66eb4bfd0fb0919b5dd8a86 +Author: Dr. Stephen Henson <steve@openssl.org> +Date: Thu May 29 15:00:05 2014 +0100 + + Fix CVE-2014-3470 + + Check session_cert is not NULL before dereferencing it. + +Patch borrowed from Fedora +Upstream-Status: Backport +Signed-off-by: Paul Eggleton <paul.eggleton@linux.intel.com> + + +diff --git a/ssl/s3_clnt.c b/ssl/s3_clnt.c +index d35376d..4324f8d 100644 +--- a/ssl/s3_clnt.c ++++ b/ssl/s3_clnt.c +@@ -2511,6 +2511,13 @@ int ssl3_send_client_key_exchange(SSL *s) + int ecdh_clnt_cert = 0; + int field_size = 0; + ++ if (s->session->sess_cert == NULL) ++ { ++ ssl3_send_alert(s,SSL3_AL_FATAL,SSL_AD_UNEXPECTED_MESSAGE); ++ SSLerr(SSL_F_SSL3_SEND_CLIENT_KEY_EXCHANGE,SSL_R_UNEXPECTED_MESSAGE); ++ goto err; ++ } ++ + /* Did we send out the client's + * ECDH share for use in premaster + * computation as part of client certificate? diff --git a/meta-edison-distro/recipes-connectivity/openssl/openssl/openssl-CVE-2010-5298.patch b/meta-edison-distro/recipes-connectivity/openssl/openssl/openssl-CVE-2010-5298.patch new file mode 100644 index 0000000..417a774 --- /dev/null +++ b/meta-edison-distro/recipes-connectivity/openssl/openssl/openssl-CVE-2010-5298.patch @@ -0,0 +1,24 @@ +openssl fix for CVE-2010-5298 + +Upstream-Status: Backport + +Race condition in the ssl3_read_bytes function in s3_pkt.c in OpenSSL +through 1.0.1g, when SSL_MODE_RELEASE_BUFFERS is enabled, allows remote +attackers to inject data across sessions or cause a denial of service +(use-after-free and parsing error) via an SSL connection in a +multithreaded environment. + +http://web.nvd.nist.gov/view/vuln/detail?vulnId=CVE-2010-5298 + +Signed-off-by: Yue Tao <Yue.Tao@windriver.com> +--- a/ssl/s3_pkt.c ++++ b/ssl/s3_pkt.c +@@ -1013,7 +1013,7 @@ start: + { + s->rstate=SSL_ST_READ_HEADER; + rr->off=0; +- if (s->mode & SSL_MODE_RELEASE_BUFFERS) ++ if (s->mode & SSL_MODE_RELEASE_BUFFERS && s->s3->rbuf.left == 0) + ssl3_release_read_buffer(s); + } + } diff --git a/meta-edison-distro/recipes-connectivity/openssl/openssl/openssl-CVE-2014-0198-fix.patch b/meta-edison-distro/recipes-connectivity/openssl/openssl/openssl-CVE-2014-0198-fix.patch new file mode 100644 index 0000000..4c51d74 --- /dev/null +++ b/meta-edison-distro/recipes-connectivity/openssl/openssl/openssl-CVE-2014-0198-fix.patch @@ -0,0 +1,23 @@ +Upstream-Status: Backport + +Reference: https://bugzilla.redhat.com/show_bug.cgi?id=1093837 + +CVE-2014-0198: An attacker can trigger generation of an SSL +alert which could cause a null pointer dereference. + +Signed-off-by: Maxin B. John <maxin.john@enea.com> +--- +diff -Naur openssl-1.0.1g-orig/ssl/s3_pkt.c openssl-1.0.1g/ssl/s3_pkt.c +--- openssl-1.0.1g-orig/ssl/s3_pkt.c 2014-03-17 17:14:20.000000000 +0100 ++++ openssl-1.0.1g/ssl/s3_pkt.c 2014-05-06 02:32:43.862587660 +0200 +@@ -657,6 +657,10 @@ + if (i <= 0) + return(i); + /* if it went, fall through and send more stuff */ ++ /* we may have released our buffer, so get it again */ ++ if (wb->buf == NULL) ++ if (!ssl3_setup_write_buffer(s)) ++ return -1; + } + + if (len == 0 && !create_empty_fragment) diff --git a/meta-edison-distro/recipes-connectivity/openssl/openssl/openssl-avoid-NULL-pointer-dereference-in-EVP_DigestInit_ex.patch b/meta-edison-distro/recipes-connectivity/openssl/openssl/openssl-avoid-NULL-pointer-dereference-in-EVP_DigestInit_ex.patch new file mode 100644 index 0000000..c161e62 --- /dev/null +++ b/meta-edison-distro/recipes-connectivity/openssl/openssl/openssl-avoid-NULL-pointer-dereference-in-EVP_DigestInit_ex.patch @@ -0,0 +1,21 @@ +openssl: avoid NULL pointer dereference in EVP_DigestInit_ex() + +We should avoid accessing the type pointer if it's NULL, +this could happen if ctx->digest is not NULL. + +Upstream-Status: Submitted +http://www.mail-archive.com/openssl-dev@openssl.org/msg32860.html + +Signed-off-by: Xufeng Zhang <xufeng.zhang@windriver.com> +--- +--- a/crypto/evp/digest.c ++++ b/crypto/evp/digest.c +@@ -199,7 +199,7 @@ + return 0; + } + #endif +- if (ctx->digest != type) ++ if (type && (ctx->digest != type)) + { + if (ctx->digest && ctx->digest->ctx_size) + OPENSSL_free(ctx->md_data); diff --git a/meta-edison-distro/recipes-connectivity/openssl/openssl/openssl-avoid-NULL-pointer-dereference-in-dh_pub_encode.patch b/meta-edison-distro/recipes-connectivity/openssl/openssl/openssl-avoid-NULL-pointer-dereference-in-dh_pub_encode.patch new file mode 100644 index 0000000..3e93fe4 --- /dev/null +++ b/meta-edison-distro/recipes-connectivity/openssl/openssl/openssl-avoid-NULL-pointer-dereference-in-dh_pub_encode.patch @@ -0,0 +1,39 @@ +openssl: avoid NULL pointer dereference in dh_pub_encode()/dsa_pub_encode() + +We should avoid accessing the pointer if ASN1_STRING_new() +allocates memory failed. + +Upstream-Status: Submitted +http://www.mail-archive.com/openssl-dev@openssl.org/msg32859.html + +Signed-off-by: Xufeng Zhang <xufeng.zhang@windriver.com> +--- +--- a/crypto/dh/dh_ameth.c ++++ b/crypto/dh/dh_ameth.c +@@ -139,6 +139,12 @@ + dh=pkey->pkey.dh; + + str = ASN1_STRING_new(); ++ if (!str) ++ { ++ DHerr(DH_F_DH_PUB_ENCODE, ERR_R_MALLOC_FAILURE); ++ goto err; ++ } ++ + str->length = i2d_DHparams(dh, &str->data); + if (str->length <= 0) + { +--- a/crypto/dsa/dsa_ameth.c ++++ b/crypto/dsa/dsa_ameth.c +@@ -148,6 +148,11 @@ + { + ASN1_STRING *str; + str = ASN1_STRING_new(); ++ if (!str) ++ { ++ DSAerr(DSA_F_DSA_PUB_ENCODE, ERR_R_MALLOC_FAILURE); ++ goto err; ++ } + str->length = i2d_DSAparams(dsa, &str->data); + if (str->length <= 0) + { diff --git a/meta-edison-distro/recipes-connectivity/openssl/openssl/openssl-fix-des.pod-error.patch b/meta-edison-distro/recipes-connectivity/openssl/openssl/openssl-fix-des.pod-error.patch new file mode 100644 index 0000000..de49729 --- /dev/null +++ b/meta-edison-distro/recipes-connectivity/openssl/openssl/openssl-fix-des.pod-error.patch @@ -0,0 +1,19 @@ +openssl: Fix pod2man des.pod error on Ubuntu 12.04 + +This is a formatting fix, '=back' is required before +'=head1' on Ubuntu 12.04. + +Upstream-Status: Pending +Signed-off-by: Baogen Shang <baogen.shang@windriver.com> +diff -urpN a_origin/des.pod b_modify/des.pod +--- a_origin/crypto/des/des.pod 2013-08-15 15:02:56.211674589 +0800 ++++ b_modify/crypto/des/des.pod 2013-08-15 15:04:14.439674580 +0800 +@@ -181,6 +181,8 @@ the uuencoded file to embed in the begin + output. If there is no name specified after the B<-u>, the name text.des + will be embedded in the header. + ++=back ++ + =head1 SEE ALSO + + ps(1), diff --git a/meta-edison-distro/recipes-connectivity/openssl/openssl/openssl-fix-doc.patch b/meta-edison-distro/recipes-connectivity/openssl/openssl/openssl-fix-doc.patch new file mode 100644 index 0000000..451256e --- /dev/null +++ b/meta-edison-distro/recipes-connectivity/openssl/openssl/openssl-fix-doc.patch @@ -0,0 +1,401 @@ +Fix documentation build errors with Perl 5.18 pod2man + +This fixes errors building man pages with newer versions of pod2man +included with Perl 5.18. + +Upstream-Status: Submitted +Signed-off-by: Jonathan Liu + +Index: openssl-1.0.1f/doc/apps/cms.pod +=================================================================== +--- openssl-1.0.1f.orig/doc/apps/cms.pod 2014-01-06 15:47:42.000000000 +0200 ++++ openssl-1.0.1f/doc/apps/cms.pod 2014-02-28 10:13:51.899979213 +0200 +@@ -450,28 +450,28 @@ + + =over 4 + +-=item 0 ++=item Z<>0 + + the operation was completely successfully. + +-=item 1 ++=item Z<>1 + + an error occurred parsing the command options. + +-=item 2 ++=item Z<>2 + + one of the input files could not be read. + +-=item 3 ++=item Z<>3 + + an error occurred creating the CMS file or when reading the MIME + message. + +-=item 4 ++=item Z<>4 + + an error occurred decrypting or verifying the message. + +-=item 5 ++=item Z<>5 + + the message was verified correctly but an error occurred writing out + the signers certificates. +Index: openssl-1.0.1f/doc/apps/smime.pod +=================================================================== +--- openssl-1.0.1f.orig/doc/apps/smime.pod 2014-01-06 15:47:42.000000000 +0200 ++++ openssl-1.0.1f/doc/apps/smime.pod 2014-02-28 10:16:57.795979233 +0200 +@@ -308,28 +308,28 @@ + + =over 4 + +-=item 0 ++=item Z<>0 + + the operation was completely successfully. + +-=item 1 ++=item Z<>1 + + an error occurred parsing the command options. + +-=item 2 ++=item Z<>2 + + one of the input files could not be read. + +-=item 3 ++=item Z<>3 + + an error occurred creating the PKCS#7 file or when reading the MIME + message. + +-=item 4 ++=item Z<>4 + + an error occurred decrypting or verifying the message. + +-=item 5 ++=item Z<>5 + + the message was verified correctly but an error occurred writing out + the signers certificates. +Index: openssl-1.0.1f/doc/ssl/SSL_COMP_add_compression_method.pod +=================================================================== +--- openssl-1.0.1f.orig/doc/ssl/SSL_COMP_add_compression_method.pod 2014-01-06 15:47:42.000000000 +0200 ++++ openssl-1.0.1f/doc/ssl/SSL_COMP_add_compression_method.pod 2014-02-28 10:18:09.679979225 +0200 +@@ -53,11 +53,11 @@ + + =over 4 + +-=item 0 ++=item Z<>0 + + The operation succeeded. + +-=item 1 ++=item Z<>1 + + The operation failed. Check the error queue to find out the reason. + +Index: openssl-1.0.1f/doc/ssl/SSL_CTX_add_session.pod +=================================================================== +--- openssl-1.0.1f.orig/doc/ssl/SSL_CTX_add_session.pod 2014-01-06 15:47:42.000000000 +0200 ++++ openssl-1.0.1f/doc/ssl/SSL_CTX_add_session.pod 2014-02-28 10:18:42.687979221 +0200 +@@ -52,13 +52,13 @@ + + =over 4 + +-=item 0 ++=item Z<>0 + + The operation failed. In case of the add operation, it was tried to add + the same (identical) session twice. In case of the remove operation, the + session was not found in the cache. + +-=item 1 ++=item Z<>1 + + The operation succeeded. + +Index: openssl-1.0.1f/doc/ssl/SSL_CTX_load_verify_locations.pod +=================================================================== +--- openssl-1.0.1f.orig/doc/ssl/SSL_CTX_load_verify_locations.pod 2014-01-06 15:47:42.000000000 +0200 ++++ openssl-1.0.1f/doc/ssl/SSL_CTX_load_verify_locations.pod 2014-02-28 10:19:09.079979218 +0200 +@@ -100,13 +100,13 @@ + + =over 4 + +-=item 0 ++=item Z<>0 + + The operation failed because B<CAfile> and B<CApath> are NULL or the + processing at one of the locations specified failed. Check the error + stack to find out the reason. + +-=item 1 ++=item Z<>1 + + The operation succeeded. + +Index: openssl-1.0.1f/doc/ssl/SSL_CTX_set_client_CA_list.pod +=================================================================== +--- openssl-1.0.1f.orig/doc/ssl/SSL_CTX_set_client_CA_list.pod 2014-01-06 15:47:42.000000000 +0200 ++++ openssl-1.0.1f/doc/ssl/SSL_CTX_set_client_CA_list.pod 2014-02-28 10:19:42.999979220 +0200 +@@ -66,13 +66,13 @@ + + =over 4 + +-=item 0 ++=item Z<>0 + + A failure while manipulating the STACK_OF(X509_NAME) object occurred or + the X509_NAME could not be extracted from B<cacert>. Check the error stack + to find out the reason. + +-=item 1 ++=item Z<>1 + + The operation succeeded. + +Index: openssl-1.0.1f/doc/ssl/SSL_CTX_set_session_id_context.pod +=================================================================== +--- openssl-1.0.1f.orig/doc/ssl/SSL_CTX_set_session_id_context.pod 2014-01-06 15:47:42.000000000 +0200 ++++ openssl-1.0.1f/doc/ssl/SSL_CTX_set_session_id_context.pod 2014-02-28 10:20:06.495979211 +0200 +@@ -64,13 +64,13 @@ + + =over 4 + +-=item 0 ++=item Z<>0 + + The length B<sid_ctx_len> of the session id context B<sid_ctx> exceeded + the maximum allowed length of B<SSL_MAX_SSL_SESSION_ID_LENGTH>. The error + is logged to the error stack. + +-=item 1 ++=item Z<>1 + + The operation succeeded. + +Index: openssl-1.0.1f/doc/ssl/SSL_CTX_set_ssl_version.pod +=================================================================== +--- openssl-1.0.1f.orig/doc/ssl/SSL_CTX_set_ssl_version.pod 2014-01-06 15:47:42.000000000 +0200 ++++ openssl-1.0.1f/doc/ssl/SSL_CTX_set_ssl_version.pod 2014-02-28 10:20:32.111979208 +0200 +@@ -42,11 +42,11 @@ + + =over 4 + +-=item 0 ++=item Z<>0 + + The new choice failed, check the error stack to find out the reason. + +-=item 1 ++=item Z<>1 + + The operation succeeded. + +Index: openssl-1.0.1f/doc/ssl/SSL_CTX_use_psk_identity_hint.pod +=================================================================== +--- openssl-1.0.1f.orig/doc/ssl/SSL_CTX_use_psk_identity_hint.pod 2014-01-06 15:47:42.000000000 +0200 ++++ openssl-1.0.1f/doc/ssl/SSL_CTX_use_psk_identity_hint.pod 2014-02-28 10:21:12.351979203 +0200 +@@ -96,7 +96,7 @@ + connection will fail with decryption_error before it will be finished + completely. + +-=item 0 ++=item Z<>0 + + PSK identity was not found. An "unknown_psk_identity" alert message + will be sent and the connection setup fails. +Index: openssl-1.0.1f/doc/ssl/SSL_accept.pod +=================================================================== +--- openssl-1.0.1f.orig/doc/ssl/SSL_accept.pod 2014-01-06 15:47:42.000000000 +0200 ++++ openssl-1.0.1f/doc/ssl/SSL_accept.pod 2014-02-28 10:21:51.535979215 +0200 +@@ -44,13 +44,13 @@ + + =over 4 + +-=item 0 ++=item Z<>0 + + The TLS/SSL handshake was not successful but was shut down controlled and + by the specifications of the TLS/SSL protocol. Call SSL_get_error() with the + return value B<ret> to find out the reason. + +-=item 1 ++=item Z<>1 + + The TLS/SSL handshake was successfully completed, a TLS/SSL connection has been + established. +Index: openssl-1.0.1f/doc/ssl/SSL_clear.pod +=================================================================== +--- openssl-1.0.1f.orig/doc/ssl/SSL_clear.pod 2014-01-06 15:47:42.000000000 +0200 ++++ openssl-1.0.1f/doc/ssl/SSL_clear.pod 2014-02-28 10:22:13.087979196 +0200 +@@ -56,12 +56,12 @@ + + =over 4 + +-=item 0 ++=item Z<>0 + + The SSL_clear() operation could not be performed. Check the error stack to + find out the reason. + +-=item 1 ++=item Z<>1 + + The SSL_clear() operation was successful. + +Index: openssl-1.0.1f/doc/ssl/SSL_connect.pod +=================================================================== +--- openssl-1.0.1f.orig/doc/ssl/SSL_connect.pod 2014-01-06 15:47:42.000000000 +0200 ++++ openssl-1.0.1f/doc/ssl/SSL_connect.pod 2014-02-28 10:22:33.991979193 +0200 +@@ -41,13 +41,13 @@ + + =over 4 + +-=item 0 ++=item Z<>0 + + The TLS/SSL handshake was not successful but was shut down controlled and + by the specifications of the TLS/SSL protocol. Call SSL_get_error() with the + return value B<ret> to find out the reason. + +-=item 1 ++=item Z<>1 + + The TLS/SSL handshake was successfully completed, a TLS/SSL connection has been + established. +Index: openssl-1.0.1f/doc/ssl/SSL_do_handshake.pod +=================================================================== +--- openssl-1.0.1f.orig/doc/ssl/SSL_do_handshake.pod 2014-01-06 15:47:42.000000000 +0200 ++++ openssl-1.0.1f/doc/ssl/SSL_do_handshake.pod 2014-02-28 10:22:56.887979159 +0200 +@@ -45,13 +45,13 @@ + + =over 4 + +-=item 0 ++=item Z<>0 + + The TLS/SSL handshake was not successful but was shut down controlled and + by the specifications of the TLS/SSL protocol. Call SSL_get_error() with the + return value B<ret> to find out the reason. + +-=item 1 ++=item Z<>1 + + The TLS/SSL handshake was successfully completed, a TLS/SSL connection has been + established. +Index: openssl-1.0.1f/doc/ssl/SSL_read.pod +=================================================================== +--- openssl-1.0.1f.orig/doc/ssl/SSL_read.pod 2014-01-06 15:47:42.000000000 +0200 ++++ openssl-1.0.1f/doc/ssl/SSL_read.pod 2014-02-28 10:23:15.303979188 +0200 +@@ -86,7 +86,7 @@ + The read operation was successful; the return value is the number of + bytes actually read from the TLS/SSL connection. + +-=item 0 ++=item Z<>0 + + The read operation was not successful. The reason may either be a clean + shutdown due to a "close notify" alert sent by the peer (in which case +Index: openssl-1.0.1f/doc/ssl/SSL_session_reused.pod +=================================================================== +--- openssl-1.0.1f.orig/doc/ssl/SSL_session_reused.pod 2014-01-06 15:47:42.000000000 +0200 ++++ openssl-1.0.1f/doc/ssl/SSL_session_reused.pod 2014-02-28 10:23:36.615979186 +0200 +@@ -27,11 +27,11 @@ + + =over 4 + +-=item 0 ++=item Z<>0 + + A new session was negotiated. + +-=item 1 ++=item Z<>1 + + A session was reused. + +Index: openssl-1.0.1f/doc/ssl/SSL_set_fd.pod +=================================================================== +--- openssl-1.0.1f.orig/doc/ssl/SSL_set_fd.pod 2014-01-06 15:47:42.000000000 +0200 ++++ openssl-1.0.1f/doc/ssl/SSL_set_fd.pod 2014-02-28 10:23:57.599979183 +0200 +@@ -35,11 +35,11 @@ + + =over 4 + +-=item 0 ++=item Z<>0 + + The operation failed. Check the error stack to find out why. + +-=item 1 ++=item Z<>1 + + The operation succeeded. + +Index: openssl-1.0.1f/doc/ssl/SSL_set_session.pod +=================================================================== +--- openssl-1.0.1f.orig/doc/ssl/SSL_set_session.pod 2014-01-06 15:47:42.000000000 +0200 ++++ openssl-1.0.1f/doc/ssl/SSL_set_session.pod 2014-02-28 10:24:16.943979181 +0200 +@@ -37,11 +37,11 @@ + + =over 4 + +-=item 0 ++=item Z<>0 + + The operation failed; check the error stack to find out the reason. + +-=item 1 ++=item Z<>1 + + The operation succeeded. + +Index: openssl-1.0.1f/doc/ssl/SSL_shutdown.pod +=================================================================== +--- openssl-1.0.1f.orig/doc/ssl/SSL_shutdown.pod 2014-01-06 15:47:42.000000000 +0200 ++++ openssl-1.0.1f/doc/ssl/SSL_shutdown.pod 2014-02-28 10:25:03.623979175 +0200 +@@ -92,19 +92,19 @@ + + =over 4 + +-=item 0 ++=item Z<>0 + + The shutdown is not yet finished. Call SSL_shutdown() for a second time, + if a bidirectional shutdown shall be performed. + The output of L<SSL_get_error(3)|SSL_get_error(3)> may be misleading, as an + erroneous SSL_ERROR_SYSCALL may be flagged even though no error occurred. + +-=item 1 ++=item Z<>1 + + The shutdown was successfully completed. The "close notify" alert was sent + and the peer's "close notify" alert was received. + +-=item -1 ++=item Z<>-1 + + The shutdown was not successful because a fatal error occurred either + at the protocol level or a connection failure occurred. It can also occur if +Index: openssl-1.0.1f/doc/ssl/SSL_write.pod +=================================================================== +--- openssl-1.0.1f.orig/doc/ssl/SSL_write.pod 2014-01-06 15:47:42.000000000 +0200 ++++ openssl-1.0.1f/doc/ssl/SSL_write.pod 2014-02-28 10:25:36.031979168 +0200 +@@ -79,7 +79,7 @@ + The write operation was successful, the return value is the number of + bytes actually written to the TLS/SSL connection. + +-=item 0 ++=item Z<>0 + + The write operation was not successful. Probably the underlying connection + was closed. Call SSL_get_error() with the return value B<ret> to find out, diff --git a/meta-edison-distro/recipes-connectivity/openssl/openssl/openssl-fix-link.patch b/meta-edison-distro/recipes-connectivity/openssl/openssl/openssl-fix-link.patch new file mode 100644 index 0000000..154106c --- /dev/null +++ b/meta-edison-distro/recipes-connectivity/openssl/openssl/openssl-fix-link.patch @@ -0,0 +1,35 @@ +From aabfb6f78af8e337d3239142117ba303fce55e7e Mon Sep 17 00:00:00 2001 +From: Dmitry Eremin-Solenikov <dbaryshkov@gmail.com> +Date: Thu, 22 Sep 2011 08:55:26 +0200 +Subject: [PATCH] fix the parallel build regarding shared libraries. + +Upstream-Status: Pending +--- + .../openssl-1.0.0e/Makefile.org | 8 ++++---- + 1 files changed, 4 insertions(+), 4 deletions(-) + +diff --git a/Makefile.org +index 3c7aea1..6326cd6 100644 +--- a/Makefile.org ++++ b/Makefile.org +@@ -243,13 +243,13 @@ build_libs: build_crypto build_ssl build_engines + + build_crypto: + @dir=crypto; target=all; $(BUILD_ONE_CMD) +-build_ssl: ++build_ssl: build_crypto + @dir=ssl; target=all; $(BUILD_ONE_CMD) +-build_engines: ++build_engines: build_crypto + @dir=engines; target=all; $(BUILD_ONE_CMD) +-build_apps: ++build_apps: build_crypto build_ssl + @dir=apps; target=all; $(BUILD_ONE_CMD) +-build_tests: ++build_tests: build_crypto build_ssl + @dir=test; target=all; $(BUILD_ONE_CMD) + build_tools: + @dir=tools; target=all; $(BUILD_ONE_CMD) +-- +1.6.6.1 + diff --git a/meta-edison-distro/recipes-connectivity/openssl/openssl/openssl_fix_for_x32.patch b/meta-edison-distro/recipes-connectivity/openssl/openssl/openssl_fix_for_x32.patch new file mode 100644 index 0000000..93ce034 --- /dev/null +++ b/meta-edison-distro/recipes-connectivity/openssl/openssl/openssl_fix_for_x32.patch @@ -0,0 +1,90 @@ +Upstream-Status: Pending + +Received from H J Liu @ Intel +Make the assembly syntax compatible with x32 gcc. Othewise x32 gcc throws errors. +Signed-Off-By: Nitin A Kamble <nitin.a.kamble@intel.com> 2011/07/13 + +ported the patch to the 1.0.0e version +Signed-Off-By: Nitin A Kamble <nitin.a.kamble@intel.com> 2011/12/01 +Index: openssl-1.0.1e/Configure +=================================================================== +--- openssl-1.0.1e.orig/Configure ++++ openssl-1.0.1e/Configure +@@ -402,6 +402,7 @@ my %table=( + "linux-ia64-ecc","ecc:-DL_ENDIAN -DTERMIO -O2 -Wall -no_cpprt::-D_REENTRANT::-ldl:SIXTY_FOUR_BIT_LONG RC4_CHUNK DES_INT:${ia64_asm}:dlfcn:linux-shared:-fPIC::.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)", + "linux-ia64-icc","icc:-DL_ENDIAN -DTERMIO -O2 -Wall -no_cpprt::-D_REENTRANT::-ldl:SIXTY_FOUR_BIT_LONG RC4_CHUNK DES_RISC1 DES_INT:${ia64_asm}:dlfcn:linux-shared:-fPIC::.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)", + "linux-x86_64", "gcc:-m64 -DL_ENDIAN -DTERMIO -O3 -Wall::-D_REENTRANT::-ldl:SIXTY_FOUR_BIT_LONG RC4_CHUNK DES_INT DES_UNROLL:${x86_64_asm}:elf:dlfcn:linux-shared:-fPIC:-m64:.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR):::64", ++"linux-x32", "gcc:-mx32 -DL_ENDIAN -DTERMIO -O3 -Wall -DMD32_REG_T=int::-D_REENTRANT::-ldl:SIXTY_FOUR_BIT RC4_CHUNK DES_INT DES_UNROLL:${x86_64_asm}:elf:dlfcn:linux-shared:-fPIC:-mx32:.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR):::x32", + "linux64-s390x", "gcc:-m64 -DB_ENDIAN -DTERMIO -O3 -Wall::-D_REENTRANT::-ldl:SIXTY_FOUR_BIT_LONG RC4_CHAR RC4_CHUNK DES_INT DES_UNROLL:${s390x_asm}:64:dlfcn:linux-shared:-fPIC:-m64:.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR):::64", + #### So called "highgprs" target for z/Architecture CPUs + # "Highgprs" is kernel feature first implemented in Linux 2.6.32, see +Index: openssl-1.0.1e/crypto/bn/asm/x86_64-gcc.c +=================================================================== +--- openssl-1.0.1e.orig/crypto/bn/asm/x86_64-gcc.c ++++ openssl-1.0.1e/crypto/bn/asm/x86_64-gcc.c +@@ -55,7 +55,7 @@ + * machine. + */ + +-#ifdef _WIN64 ++#if defined _WIN64 || !defined __LP64__ + #define BN_ULONG unsigned long long + #else + #define BN_ULONG unsigned long +@@ -192,9 +192,9 @@ BN_ULONG bn_add_words (BN_ULONG *rp, con + asm ( + " subq %2,%2 \n" + ".p2align 4 \n" +- "1: movq (%4,%2,8),%0 \n" +- " adcq (%5,%2,8),%0 \n" +- " movq %0,(%3,%2,8) \n" ++ "1: movq (%q4,%2,8),%0 \n" ++ " adcq (%q5,%2,8),%0 \n" ++ " movq %0,(%q3,%2,8) \n" + " leaq 1(%2),%2 \n" + " loop 1b \n" + " sbbq %0,%0 \n" +@@ -215,9 +215,9 @@ BN_ULONG bn_sub_words (BN_ULONG *rp, con + asm ( + " subq %2,%2 \n" + ".p2align 4 \n" +- "1: movq (%4,%2,8),%0 \n" +- " sbbq (%5,%2,8),%0 \n" +- " movq %0,(%3,%2,8) \n" ++ "1: movq (%q4,%2,8),%0 \n" ++ " sbbq (%q5,%2,8),%0 \n" ++ " movq %0,(%q3,%2,8) \n" + " leaq 1(%2),%2 \n" + " loop 1b \n" + " sbbq %0,%0 \n" +Index: openssl-1.0.1e/crypto/bn/bn.h +=================================================================== +--- openssl-1.0.1e.orig/crypto/bn/bn.h ++++ openssl-1.0.1e/crypto/bn/bn.h +@@ -172,6 +172,13 @@ extern "C" { + # endif + #endif + ++/* Address type. */ ++#ifdef _WIN64 ++#define BN_ADDR unsigned long long ++#else ++#define BN_ADDR unsigned long ++#endif ++ + /* assuming long is 64bit - this is the DEC Alpha + * unsigned long long is only 64 bits :-(, don't define + * BN_LLONG for the DEC Alpha */ +Index: openssl-1.0.1e/crypto/bn/bn_exp.c +=================================================================== +--- openssl-1.0.1e.orig/crypto/bn/bn_exp.c ++++ openssl-1.0.1e/crypto/bn/bn_exp.c +@@ -567,7 +567,7 @@ static int MOD_EXP_CTIME_COPY_FROM_PREBU + + /* Given a pointer value, compute the next address that is a cache line multiple. */ + #define MOD_EXP_CTIME_ALIGN(x_) \ +- ((unsigned char*)(x_) + (MOD_EXP_CTIME_MIN_CACHE_LINE_WIDTH - (((size_t)(x_)) & (MOD_EXP_CTIME_MIN_CACHE_LINE_MASK)))) ++ ((unsigned char*)(x_) + (MOD_EXP_CTIME_MIN_CACHE_LINE_WIDTH - (((BN_ADDR)(x_)) & (MOD_EXP_CTIME_MIN_CACHE_LINE_MASK)))) + + /* This variant of BN_mod_exp_mont() uses fixed windows and the special + * precomputation memory layout to limit data-dependency to a minimum diff --git a/meta-edison-distro/recipes-connectivity/openssl/openssl/shared-libs.patch b/meta-edison-distro/recipes-connectivity/openssl/openssl/shared-libs.patch new file mode 100644 index 0000000..a7ca0a3 --- /dev/null +++ b/meta-edison-distro/recipes-connectivity/openssl/openssl/shared-libs.patch @@ -0,0 +1,41 @@ +Upstream-Status: Inappropriate [configuration] + +Index: openssl-1.0.1e/crypto/Makefile +=================================================================== +--- openssl-1.0.1e.orig/crypto/Makefile ++++ openssl-1.0.1e/crypto/Makefile +@@ -108,7 +108,7 @@ $(LIB): $(LIBOBJ) + + shared: buildinf.h lib subdirs + if [ -n "$(SHARED_LIBS)" ]; then \ +- (cd ..; $(MAKE) $(SHARED_LIB)); \ ++ (cd ..; $(MAKE) -e $(SHARED_LIB)); \ + fi + + libs: +Index: openssl-1.0.1e/Makefile.org +=================================================================== +--- openssl-1.0.1e.orig/Makefile.org ++++ openssl-1.0.1e/Makefile.org +@@ -310,7 +310,7 @@ libcrypto$(SHLIB_EXT): libcrypto.a fips_ + + libssl$(SHLIB_EXT): libcrypto$(SHLIB_EXT) libssl.a + @if [ "$(SHLIB_TARGET)" != "" ]; then \ +- $(MAKE) SHLIBDIRS=ssl SHLIBDEPS='-lcrypto' build-shared; \ ++ $(MAKE) -e SHLIBDIRS=ssl SHLIBDEPS='-lcrypto' build-shared; \ + else \ + echo "There's no support for shared libraries on this platform" >&2; \ + exit 1; \ +Index: openssl-1.0.1e/ssl/Makefile +=================================================================== +--- openssl-1.0.1e.orig/ssl/Makefile ++++ openssl-1.0.1e/ssl/Makefile +@@ -62,7 +62,7 @@ lib: $(LIBOBJ) + + shared: lib + if [ -n "$(SHARED_LIBS)" ]; then \ +- (cd ..; $(MAKE) $(SHARED_LIB)); \ ++ (cd ..; $(MAKE) -e $(SHARED_LIB)); \ + fi + + files: diff --git a/meta-edison-distro/recipes-connectivity/openssl/openssl_1.0.1j.bb b/meta-edison-distro/recipes-connectivity/openssl/openssl_1.0.1j.bb new file mode 100644 index 0000000..ecb31d0 --- /dev/null +++ b/meta-edison-distro/recipes-connectivity/openssl/openssl_1.0.1j.bb @@ -0,0 +1,54 @@ +require openssl.inc + +# For target side versions of openssl enable support for OCF Linux driver +# if they are available. +DEPENDS += "cryptodev-linux" + +CFLAG += "-DHAVE_CRYPTODEV -DUSE_CRYPTODEV_DIGESTS" + +LIC_FILES_CHKSUM = "file://LICENSE;md5=f9a8f968107345e0b75aa8c2ecaa7ec8" + +export DIRS = "crypto ssl apps engines" +export OE_LDFLAGS="${LDFLAGS}" + +SRC_URI += "file://configure-targets.patch \ + file://shared-libs.patch \ + file://oe-ldflags.patch \ + file://engines-install-in-libdir-ssl.patch \ + file://openssl-fix-link.patch \ + file://debian/version-script.patch \ + file://debian/pic.patch \ + file://debian/c_rehash-compat.patch \ + file://debian/ca.patch \ + file://debian/make-targets.patch \ + file://debian/no-rpath.patch \ + file://debian/man-dir.patch \ + file://debian/man-section.patch \ + file://debian/no-symbolic.patch \ + file://debian/debian-targets.patch \ + file://openssl_fix_for_x32.patch \ + file://fix-cipher-des-ede3-cfb1.patch \ + file://openssl-avoid-NULL-pointer-dereference-in-EVP_DigestInit_ex.patch \ + file://openssl-avoid-NULL-pointer-dereference-in-dh_pub_encode.patch \ + file://initial-aarch64-bits.patch \ + file://find.pl \ + file://openssl-fix-des.pod-error.patch \ + " + +SRC_URI[md5sum] = "f7175c9cd3c39bb1907ac8bba9df8ed3" +SRC_URI[sha256sum] = "1b60ca8789ba6f03e8ef20da2293b8dc131c39d83814e775069f02d26354edf3" + +PACKAGES =+ " \ + ${PN}-engines \ + ${PN}-engines-dbg \ + " + +FILES_${PN}-engines = "${libdir}/ssl/engines/*.so ${libdir}/engines" +FILES_${PN}-engines-dbg = "${libdir}/ssl/engines/.debug" + +PARALLEL_MAKE = "" +PARALLEL_MAKEINST = "" + +do_configure_prepend() { + cp ${WORKDIR}/find.pl ${S}/util/find.pl +} diff --git a/meta-edison-distro/recipes-connectivity/wpa_supplicant/wpa-supplicant/99_wpa_supplicant b/meta-edison-distro/recipes-connectivity/wpa_supplicant/wpa-supplicant/99_wpa_supplicant new file mode 100644 index 0000000..6ff4dd8 --- /dev/null +++ b/meta-edison-distro/recipes-connectivity/wpa_supplicant/wpa-supplicant/99_wpa_supplicant @@ -0,0 +1 @@ +d root root 0700 /var/run/wpa_supplicant none diff --git a/meta-edison-distro/recipes-connectivity/wpa_supplicant/wpa-supplicant/defconfig-gnutls b/meta-edison-distro/recipes-connectivity/wpa_supplicant/wpa-supplicant/defconfig-gnutls new file mode 100644 index 0000000..71f42e6 --- /dev/null +++ b/meta-edison-distro/recipes-connectivity/wpa_supplicant/wpa-supplicant/defconfig-gnutls @@ -0,0 +1,440 @@ +# Example wpa_supplicant build time configuration +# +# This file lists the configuration options that are used when building the +# hostapd binary. All lines starting with # are ignored. Configuration option +# lines must be commented out complete, if they are not to be included, i.e., +# just setting VARIABLE=n is not disabling that variable. +# +# This file is included in Makefile, so variables like CFLAGS and LIBS can also +# be modified from here. In most cases, these lines should use += in order not +# to override previous values of the variables. + + +# Uncomment following two lines and fix the paths if you have installed OpenSSL +# or GnuTLS in non-default location +#CFLAGS += -I/usr/local/openssl/include +#LIBS += -L/usr/local/openssl/lib + +# Some Red Hat versions seem to include kerberos header files from OpenSSL, but +# the kerberos files are not in the default include path. Following line can be +# used to fix build issues on such systems (krb5.h not found). +#CFLAGS += -I/usr/include/kerberos + +# Example configuration for various cross-compilation platforms + +#### sveasoft (e.g., for Linksys WRT54G) ###################################### +#CC=mipsel-uclibc-gcc +#CC=/opt/brcm/hndtools-mipsel-uclibc/bin/mipsel-uclibc-gcc +#CFLAGS += -Os +#CPPFLAGS += -I../src/include -I../../src/router/openssl/include +#LIBS += -L/opt/brcm/hndtools-mipsel-uclibc-0.9.19/lib -lssl +############################################################################### + +#### openwrt (e.g., for Linksys WRT54G) ####################################### +#CC=mipsel-uclibc-gcc +#CC=/opt/brcm/hndtools-mipsel-uclibc/bin/mipsel-uclibc-gcc +#CFLAGS += -Os +#CPPFLAGS=-I../src/include -I../openssl-0.9.7d/include \ +# -I../WRT54GS/release/src/include +#LIBS = -lssl +############################################################################### + + +# Driver interface for Host AP driver +CONFIG_DRIVER_HOSTAP=y + +# Driver interface for Agere driver +#CONFIG_DRIVER_HERMES=y +# Change include directories to match with the local setup +#CFLAGS += -I../../hcf -I../../include -I../../include/hcf +#CFLAGS += -I../../include/wireless + +# Driver interface for madwifi driver +# Deprecated; use CONFIG_DRIVER_WEXT=y instead. +#CONFIG_DRIVER_MADWIFI=y +# Set include directory to the madwifi source tree +#CFLAGS += -I../../madwifi + +# Driver interface for ndiswrapper +# Deprecated; use CONFIG_DRIVER_WEXT=y instead. +#CONFIG_DRIVER_NDISWRAPPER=y + +# Driver interface for Atmel driver +# CONFIG_DRIVER_ATMEL=y + +# Driver interface for old Broadcom driver +# Please note that the newer Broadcom driver ("hybrid Linux driver") supports +# Linux wireless extensions and does not need (or even work) with the old +# driver wrapper. Use CONFIG_DRIVER_WEXT=y with that driver. +#CONFIG_DRIVER_BROADCOM=y +# Example path for wlioctl.h; change to match your configuration +#CFLAGS += -I/opt/WRT54GS/release/src/include + +# Driver interface for Intel ipw2100/2200 driver +# Deprecated; use CONFIG_DRIVER_WEXT=y instead. +#CONFIG_DRIVER_IPW=y + +# Driver interface for Ralink driver +#CONFIG_DRIVER_RALINK=y + +# Driver interface for generic Linux wireless extensions +#CONFIG_DRIVER_WEXT=y + +# Driver interface for Linux drivers using the nl80211 kernel interface +CONFIG_LIBNL32=y +CONFIG_DRIVER_NL80211=y + +# Driver interface for FreeBSD net80211 layer (e.g., Atheros driver) +#CONFIG_DRIVER_BSD=y +#CFLAGS += -I/usr/local/include +#LIBS += -L/usr/local/lib +#LIBS_p += -L/usr/local/lib +#LIBS_c += -L/usr/local/lib + +# Driver interface for Windows NDIS +#CONFIG_DRIVER_NDIS=y +#CFLAGS += -I/usr/include/w32api/ddk +#LIBS += -L/usr/local/lib +# For native build using mingw +#CONFIG_NATIVE_WINDOWS=y +# Additional directories for cross-compilation on Linux host for mingw target +#CFLAGS += -I/opt/mingw/mingw32/include/ddk +#LIBS += -L/opt/mingw/mingw32/lib +#CC=mingw32-gcc +# By default, driver_ndis uses WinPcap for low-level operations. This can be +# replaced with the following option which replaces WinPcap calls with NDISUIO. +# However, this requires that WZC is disabled (net stop wzcsvc) before starting +# wpa_supplicant. +# CONFIG_USE_NDISUIO=y + +# Driver interface for development testing +#CONFIG_DRIVER_TEST=y + +# Include client MLME (management frame processing) for test driver +# This can be used to test MLME operations in hostapd with the test interface. +# space. +#CONFIG_CLIENT_MLME=y + +# Driver interface for wired Ethernet drivers +#CONFIG_DRIVER_WIRED=y + +# Driver interface for the Broadcom RoboSwitch family +#CONFIG_DRIVER_ROBOSWITCH=y + +# Driver interface for no driver (e.g., WPS ER only) +#CONFIG_DRIVER_NONE=y + +# Enable IEEE 802.1X Supplicant (automatically included if any EAP method is +# included) +CONFIG_IEEE8021X_EAPOL=y + +# EAP-MD5 +CONFIG_EAP_MD5=y + +# EAP-MSCHAPv2 +CONFIG_EAP_MSCHAPV2=y + +# EAP-TLS +CONFIG_EAP_TLS=y + +# EAL-PEAP +CONFIG_EAP_PEAP=y + +# EAP-TTLS +CONFIG_EAP_TTLS=y + +# EAP-FAST +# Note: Default OpenSSL package does not include support for all the +# functionality needed for EAP-FAST. If EAP-FAST is enabled with OpenSSL, +# the OpenSSL library must be patched (openssl-0.9.8d-tls-extensions.patch) +# to add the needed functions. +CONFIG_EAP_FAST=y + +# EAP-GTC +CONFIG_EAP_GTC=y + +# EAP-OTP +CONFIG_EAP_OTP=y + +# EAP-SIM (enable CONFIG_PCSC, if EAP-SIM is used) +#CONFIG_EAP_SIM=y + +# EAP-PSK (experimental; this is _not_ needed for WPA-PSK) +#CONFIG_EAP_PSK=y + +# EAP-PAX +#CONFIG_EAP_PAX=y + +# LEAP +CONFIG_EAP_LEAP=y + +# EAP-AKA (enable CONFIG_PCSC, if EAP-AKA is used) +#CONFIG_EAP_AKA=y + +# EAP-AKA' (enable CONFIG_PCSC, if EAP-AKA' is used). +# This requires CONFIG_EAP_AKA to be enabled, too. +#CONFIG_EAP_AKA_PRIME=y + +# Enable USIM simulator (Milenage) for EAP-AKA +#CONFIG_USIM_SIMULATOR=y + +# EAP-SAKE +#CONFIG_EAP_SAKE=y + +# EAP-GPSK +#CONFIG_EAP_GPSK=y +# Include support for optional SHA256 cipher suite in EAP-GPSK +#CONFIG_EAP_GPSK_SHA256=y + +# EAP-TNC and related Trusted Network Connect support (experimental) +#CONFIG_EAP_TNC=y + +# Wi-Fi Protected Setup (WPS) +CONFIG_WPS=y +# Enable WSC 2.0 support +CONFIG_WPS2=y + +# EAP-IKEv2 +#CONFIG_EAP_IKEV2=y + +# PKCS#12 (PFX) support (used to read private key and certificate file from +# a file that usually has extension .p12 or .pfx) +CONFIG_PKCS12=y + +# Smartcard support (i.e., private key on a smartcard), e.g., with openssl +# engine. +CONFIG_SMARTCARD=y + +# PC/SC interface for smartcards (USIM, GSM SIM) +# Enable this if EAP-SIM or EAP-AKA is included +#CONFIG_PCSC=y + +# Development testing +#CONFIG_EAPOL_TEST=y + +# Select control interface backend for external programs, e.g, wpa_cli: +# unix = UNIX domain sockets (default for Linux/*BSD) +# udp = UDP sockets using localhost (127.0.0.1) +# named_pipe = Windows Named Pipe (default for Windows) +# y = use default (backwards compatibility) +# If this option is commented out, control interface is not included in the +# build. +CONFIG_CTRL_IFACE=y + +# Include support for GNU Readline and History Libraries in wpa_cli. +# When building a wpa_cli binary for distribution, please note that these +# libraries are licensed under GPL and as such, BSD license may not apply for +# the resulting binary. +#CONFIG_READLINE=y + +# Remove debugging code that is printing out debug message to stdout. +# This can be used to reduce the size of the wpa_supplicant considerably +# if debugging code is not needed. The size reduction can be around 35% +# (e.g., 90 kB). +#CONFIG_NO_STDOUT_DEBUG=y + +# Remove WPA support, e.g., for wired-only IEEE 802.1X supplicant, to save +# 35-50 kB in code size. +#CONFIG_NO_WPA=y + +# Remove WPA2 support. This allows WPA to be used, but removes WPA2 code to +# save about 1 kB in code size when building only WPA-Personal (no EAP support) +# or 6 kB if building for WPA-Enterprise. +#CONFIG_NO_WPA2=y + +# Remove IEEE 802.11i/WPA-Personal ASCII passphrase support +# This option can be used to reduce code size by removing support for +# converting ASCII passphrases into PSK. If this functionality is removed, the +# PSK can only be configured as the 64-octet hexstring (e.g., from +# wpa_passphrase). This saves about 0.5 kB in code size. +#CONFIG_NO_WPA_PASSPHRASE=y + +# Disable scan result processing (ap_mode=1) to save code size by about 1 kB. +# This can be used if ap_scan=1 mode is never enabled. +#CONFIG_NO_SCAN_PROCESSING=y + +# Select configuration backend: +# file = text file (e.g., wpa_supplicant.conf; note: the configuration file +# path is given on command line, not here; this option is just used to +# select the backend that allows configuration files to be used) +# winreg = Windows registry (see win_example.reg for an example) +CONFIG_BACKEND=file + +# Remove configuration write functionality (i.e., to allow the configuration +# file to be updated based on runtime configuration changes). The runtime +# configuration can still be changed, the changes are just not going to be +# persistent over restarts. This option can be used to reduce code size by +# about 3.5 kB. +#CONFIG_NO_CONFIG_WRITE=y + +# Remove support for configuration blobs to reduce code size by about 1.5 kB. +#CONFIG_NO_CONFIG_BLOBS=y + +# Select program entry point implementation: +# main = UNIX/POSIX like main() function (default) +# main_winsvc = Windows service (read parameters from registry) +# main_none = Very basic example (development use only) +#CONFIG_MAIN=main + +# Select wrapper for operatins system and C library specific functions +# unix = UNIX/POSIX like systems (default) +# win32 = Windows systems +# none = Empty template +#CONFIG_OS=unix + +# Select event loop implementation +# eloop = select() loop (default) +# eloop_win = Windows events and WaitForMultipleObject() loop +# eloop_none = Empty template +#CONFIG_ELOOP=eloop + +# Select layer 2 packet implementation +# linux = Linux packet socket (default) +# pcap = libpcap/libdnet/WinPcap +# freebsd = FreeBSD libpcap +# winpcap = WinPcap with receive thread +# ndis = Windows NDISUIO (note: requires CONFIG_USE_NDISUIO=y) +# none = Empty template +#CONFIG_L2_PACKET=linux + +# PeerKey handshake for Station to Station Link (IEEE 802.11e DLS) +CONFIG_PEERKEY=y + +# IEEE 802.11w (management frame protection) +# This version is an experimental implementation based on IEEE 802.11w/D1.0 +# draft and is subject to change since the standard has not yet been finalized. +# Driver support is also needed for IEEE 802.11w. +#CONFIG_IEEE80211W=y + +# Select TLS implementation +# openssl = OpenSSL (default) +# gnutls = GnuTLS (needed for TLS/IA, see also CONFIG_GNUTLS_EXTRA) +# internal = Internal TLSv1 implementation (experimental) +# none = Empty template +CONFIG_TLS=openssl + +# Whether to enable TLS/IA support, which is required for EAP-TTLSv1. +# You need CONFIG_TLS=gnutls for this to have any effect. Please note that +# even though the core GnuTLS library is released under LGPL, this extra +# library uses GPL and as such, the terms of GPL apply to the combination +# of wpa_supplicant and GnuTLS if this option is enabled. BSD license may not +# apply for distribution of the resulting binary. +#CONFIG_GNUTLS_EXTRA=y + +# If CONFIG_TLS=internal is used, additional library and include paths are +# needed for LibTomMath. Alternatively, an integrated, minimal version of +# LibTomMath can be used. See beginning of libtommath.c for details on benefits +# and drawbacks of this option. +#CONFIG_INTERNAL_LIBTOMMATH=y +#ifndef CONFIG_INTERNAL_LIBTOMMATH +#LTM_PATH=/usr/src/libtommath-0.39 +#CFLAGS += -I$(LTM_PATH) +#LIBS += -L$(LTM_PATH) +#LIBS_p += -L$(LTM_PATH) +#endif +# At the cost of about 4 kB of additional binary size, the internal LibTomMath +# can be configured to include faster routines for exptmod, sqr, and div to +# speed up DH and RSA calculation considerably +#CONFIG_INTERNAL_LIBTOMMATH_FAST=y + +# Include NDIS event processing through WMI into wpa_supplicant/wpasvc. +# This is only for Windows builds and requires WMI-related header files and +# WbemUuid.Lib from Platform SDK even when building with MinGW. +#CONFIG_NDIS_EVENTS_INTEGRATED=y +#PLATFORMSDKLIB="/opt/Program Files/Microsoft Platform SDK/Lib" + +# Add support for old DBus control interface +# (fi.epitest.hostap.WPASupplicant) +#CONFIG_CTRL_IFACE_DBUS=y + +# Add support for new DBus control interface +# (fi.w1.hostap.wpa_supplicant1) +CONFIG_CTRL_IFACE_DBUS_NEW=y + +# Add introspection support for new DBus control interface +#CONFIG_CTRL_IFACE_DBUS_INTRO=y + +# Add support for loading EAP methods dynamically as shared libraries. +# When this option is enabled, each EAP method can be either included +# statically (CONFIG_EAP_<method>=y) or dynamically (CONFIG_EAP_<method>=dyn). +# Dynamic EAP methods are build as shared objects (eap_*.so) and they need to +# be loaded in the beginning of the wpa_supplicant configuration file +# (see load_dynamic_eap parameter in the example file) before being used in +# the network blocks. +# +# Note that some shared parts of EAP methods are included in the main program +# and in order to be able to use dynamic EAP methods using these parts, the +# main program must have been build with the EAP method enabled (=y or =dyn). +# This means that EAP-TLS/PEAP/TTLS/FAST cannot be added as dynamic libraries +# unless at least one of them was included in the main build to force inclusion +# of the shared code. Similarly, at least one of EAP-SIM/AKA must be included +# in the main build to be able to load these methods dynamically. +# +# Please also note that using dynamic libraries will increase the total binary +# size. Thus, it may not be the best option for targets that have limited +# amount of memory/flash. +#CONFIG_DYNAMIC_EAP_METHODS=y + +# IEEE Std 802.11r-2008 (Fast BSS Transition) +#CONFIG_IEEE80211R=y + +# Add support for writing debug log to a file (/tmp/wpa_supplicant-log-#.txt) +CONFIG_DEBUG_FILE=y + +# Send debug messages to syslog instead of stdout +CONFIG_DEBUG_SYSLOG=y + +# Enable privilege separation (see README 'Privilege separation' for details) +#CONFIG_PRIVSEP=y + +# Enable mitigation against certain attacks against TKIP by delaying Michael +# MIC error reports by a random amount of time between 0 and 60 seconds +#CONFIG_DELAYED_MIC_ERROR_REPORT=y + +# Enable tracing code for developer debugging +# This tracks use of memory allocations and other registrations and reports +# incorrect use with a backtrace of call (or allocation) location. +#CONFIG_WPA_TRACE=y +# For BSD, comment out these. +#LIBS += -lexecinfo +#LIBS_p += -lexecinfo +#LIBS_c += -lexecinfo + +# Use libbfd to get more details for developer debugging +# This enables use of libbfd to get more detailed symbols for the backtraces +# generated by CONFIG_WPA_TRACE=y. +#CONFIG_WPA_TRACE_BFD=y +# For BSD, comment out these. +#LIBS += -lbfd -liberty -lz +#LIBS_p += -lbfd -liberty -lz +#LIBS_c += -lbfd -liberty -lz +#CONFIG_TLS = gnutls +#CONFIG_GNUTLS_EXTRA=y +CONFIG_CTRL_IFACE_DBUS=y +CONFIG_CTRL_IFACE_DBUS_NEW=y + +# AP mode operations with wpa_supplicant +# This can be used for controlling AP mode operations with wpa_supplicant. It +# should be noted that this is mainly aimed at simple cases like +# WPA2-Personal while more complex configurations like WPA2-Enterprise with an +# external RADIUS server can be supported with hostapd. +CONFIG_AP=y + +# P2P (Wi-Fi Direct) +# This can be used to enable P2P support in wpa_supplicant. See README-P2P for +# more information on P2P operations. +CONFIG_P2P=y +CONFIG_BGSCAN_SIMPLE=y + +# Autoscan +# This can be used to enable automatic scan support in wpa_supplicant. +# See wpa_supplicant.conf for more information on autoscan usage. +# +# Enabling directly a module will enable autoscan support. +# For exponential module: +CONFIG_AUTOSCAN_EXPONENTIAL=y +# For periodic module: +#CONFIG_AUTOSCAN_PERIODIC=y + +CFLAGS += -DEDISON_TARGET +CFLAGS += -DANDROID_P2P diff --git a/meta-edison-distro/recipes-connectivity/wpa_supplicant/wpa-supplicant/fi.w1.wpa_supplicant1.service b/meta-edison-distro/recipes-connectivity/wpa_supplicant/wpa-supplicant/fi.w1.wpa_supplicant1.service new file mode 100644 index 0000000..845a246 --- /dev/null +++ b/meta-edison-distro/recipes-connectivity/wpa_supplicant/wpa-supplicant/fi.w1.wpa_supplicant1.service @@ -0,0 +1,5 @@ +[D-BUS Service] +Name=fi.w1.wpa_supplicant1 +Exec=/usr/sbin/wpa_supplicant -c/etc/wpa_supplicant/wpa_supplicant.conf -iwlan0 -Dnl80211 -u -O /var/run/wpa_supplicant +User=root +SystemdService=wpa_supplicant.service diff --git a/meta-edison-distro/recipes-connectivity/wpa_supplicant/wpa-supplicant/fix-libnl3-host-contamination.patch b/meta-edison-distro/recipes-connectivity/wpa_supplicant/wpa-supplicant/fix-libnl3-host-contamination.patch new file mode 100644 index 0000000..eb8036f --- /dev/null +++ b/meta-edison-distro/recipes-connectivity/wpa_supplicant/wpa-supplicant/fix-libnl3-host-contamination.patch @@ -0,0 +1,42 @@ +Upstream-Status: Pending + +From 37d6b3dd5a737cd67468e4a58b372bddd924a7be Mon Sep 17 00:00:00 2001 +From: Andreas Oberritter <obi@opendreambox.org> +Date: Fri, 8 Mar 2013 22:55:19 +0100 +Subject: [PATCH] Revert "build: Use updated libnl3 header paths" + +This reverts commit e7ecddf33a446072effbc85a27a078a8e582c89e. +--- + src/drivers/drivers.mak | 2 +- + src/drivers/drivers.mk | 2 +- + 2 files changed, 2 insertions(+), 2 deletions(-) + +diff --git a/src/drivers/drivers.mak b/src/drivers/drivers.mak +index 68ff910..1f38f57 100644 +--- a/src/drivers/drivers.mak ++++ b/src/drivers/drivers.mak +@@ -30,7 +30,7 @@ NEED_RFKILL=y + ifdef CONFIG_LIBNL32 + DRV_LIBS += -lnl-3 + DRV_LIBS += -lnl-genl-3 +- DRV_CFLAGS += -DCONFIG_LIBNL20 -I/usr/include/libnl3 ++ DRV_CFLAGS += -DCONFIG_LIBNL20 + else + ifdef CONFIG_LIBNL_TINY + DRV_LIBS += -lnl-tiny +diff --git a/src/drivers/drivers.mk b/src/drivers/drivers.mk +index db8561a..c93e88d 100644 +--- a/src/drivers/drivers.mk ++++ b/src/drivers/drivers.mk +@@ -30,7 +30,7 @@ NEED_RFKILL=y + ifdef CONFIG_LIBNL32 + DRV_LIBS += -lnl-3 + DRV_LIBS += -lnl-genl-3 +- DRV_CFLAGS += -DCONFIG_LIBNL20 -I/usr/include/libnl3 ++ DRV_CFLAGS += -DCONFIG_LIBNL20 + else + ifdef CONFIG_LIBNL_TINY + DRV_LIBS += -lnl-tiny +-- +1.7.10.4 + diff --git a/meta-edison-distro/recipes-connectivity/wpa_supplicant/wpa-supplicant/p2p_supplicant.conf-sane b/meta-edison-distro/recipes-connectivity/wpa_supplicant/wpa-supplicant/p2p_supplicant.conf-sane new file mode 100644 index 0000000..62e2236 --- /dev/null +++ b/meta-edison-distro/recipes-connectivity/wpa_supplicant/wpa-supplicant/p2p_supplicant.conf-sane @@ -0,0 +1,12 @@ +ctrl_interface=/var/run/wpa_supplicant +ctrl_interface_group=0 +config_methods=virtual_push_button virtual_display push_button keypad +update_config=1 +fast_reauth=1 +device_name=Edison +manufacturer=Intel +model_name=Edison +p2p_ssid_postfix=-Edison +persistent_reconnect=1 + + diff --git a/meta-edison-distro/recipes-connectivity/wpa_supplicant/wpa-supplicant/register-autoscan-correctly.patch b/meta-edison-distro/recipes-connectivity/wpa_supplicant/wpa-supplicant/register-autoscan-correctly.patch new file mode 100644 index 0000000..453240f --- /dev/null +++ b/meta-edison-distro/recipes-connectivity/wpa_supplicant/wpa-supplicant/register-autoscan-correctly.patch @@ -0,0 +1,51 @@ +From f157b78166baff2c32ed3983b4e787417505b343 Mon Sep 17 00:00:00 2001 +From: Tomasz Bursztyka <tomasz.bursztyka@linux.intel.com> +Date: Mon, 1 Jul 2013 19:11:34 +0300 +Subject: [PATCH] dbus: Register the AutoScan method call at the right place + +Upstream-Status: Accepted [hostap@lists.shmoo.com] + +Signed-hostap: Tomasz Bursztyka <tomasz.bursztyka@linux.intel.com> +--- + wpa_supplicant/dbus/dbus_new.c | 18 +++++++++--------- + 1 file changed, 9 insertions(+), 9 deletions(-) + +diff --git a/wpa_supplicant/dbus/dbus_new.c b/wpa_supplicant/dbus/dbus_new.c +index 8bc6618..d076d2d 100644 +--- a/wpa_supplicant/dbus/dbus_new.c ++++ b/wpa_supplicant/dbus/dbus_new.c +@@ -1917,15 +1917,6 @@ static const struct wpa_dbus_method_desc wpas_dbus_global_methods[] = { + END_ARGS + } + }, +-#ifdef CONFIG_AUTOSCAN +- { "AutoScan", WPAS_DBUS_NEW_IFACE_INTERFACE, +- (WPADBusMethodHandler) &wpas_dbus_handler_autoscan, +- { +- { "arg", "s", ARG_IN }, +- END_ARGS +- } +- }, +-#endif /* CONFIG_AUTOSCAN */ + { NULL, NULL, NULL, { END_ARGS } } + }; + +@@ -2649,6 +2640,15 @@ static const struct wpa_dbus_method_desc wpas_dbus_interface_methods[] = { + } + }, + #endif /* CONFIG_AP */ ++#ifdef CONFIG_AUTOSCAN ++ { "AutoScan", WPAS_DBUS_NEW_IFACE_INTERFACE, ++ (WPADBusMethodHandler) &wpas_dbus_handler_autoscan, ++ { ++ { "arg", "s", ARG_IN }, ++ END_ARGS ++ } ++ }, ++#endif /* CONFIG_AUTOSCAN */ + { NULL, NULL, NULL, { END_ARGS } } + }; + +-- +1.8.1.2 + diff --git a/meta-edison-distro/recipes-connectivity/wpa_supplicant/wpa-supplicant/udhcpd-p2p.conf b/meta-edison-distro/recipes-connectivity/wpa_supplicant/wpa-supplicant/udhcpd-p2p.conf new file mode 100644 index 0000000..dcd92f2 --- /dev/null +++ b/meta-edison-distro/recipes-connectivity/wpa_supplicant/wpa-supplicant/udhcpd-p2p.conf @@ -0,0 +1,107 @@ +# Sample udhcpd configuration file (/etc/udhcpd.conf) + +# The start and end of the IP lease block + +start 192.168.42.20 #default: 192.168.0.20 +end 192.168.42.254 #default: 192.168.0.254 + + +# The interface that udhcpd will use + +interface INTERFACE #default: eth0 + + +# The maximim number of leases (includes addressesd reserved +# by OFFER's, DECLINE's, and ARP conficts + +#max_leases 254 #default: 254 + + +# If remaining is true (default), udhcpd will store the time +# remaining for each lease in the udhcpd leases file. This is +# for embedded systems that cannot keep time between reboots. +# If you set remaining to no, the absolute time that the lease +# expires at will be stored in the dhcpd.leases file. + +#remaining yes #default: yes + + +# The time period at which udhcpd will write out a dhcpd.leases +# file. If this is 0, udhcpd will never automatically write a +# lease file. (specified in seconds) + +#auto_time 7200 #default: 7200 (2 hours) + + +# The amount of time that an IP will be reserved (leased) for if a +# DHCP decline message is received (seconds). + +#decline_time 3600 #default: 3600 (1 hour) + + +# The amount of time that an IP will be reserved (leased) for if an +# ARP conflct occurs. (seconds + +#conflict_time 3600 #default: 3600 (1 hour) + + +# How long an offered address is reserved (leased) in seconds + +#offer_time 60 #default: 60 (1 minute) + +# If a lease to be given is below this value, the full lease time is +# instead used (seconds). + +#min_lease 60 #defult: 60 + + +# The location of the leases file + +#lease_file /var/lib/misc/udhcpd.leases #defualt: /var/lib/misc/udhcpd.leases + +# The location of the pid file +pidfile /var/run/udhcpd-INTERFACE.pid #default: /var/run/udhcpd.pid + +# Every time udhcpd writes a leases file, the below script will be called. +# Useful for writing the lease file to flash every few hours. + +#notify_file #default: (no script) + +#notify_file dumpleases # <--- useful for debugging + +# The following are bootp specific options, setable by udhcpd. + +#siaddr 192.168.0.22 #default: 0.0.0.0 + +#sname zorak #default: (none) + +#boot_file /var/nfs_root #default: (none) + +# The remainer of options are DHCP options and can be specifed with the +# keyword 'opt' or 'option'. If an option can take multiple items, such +# as the dns option, they can be listed on the same line, or multiple +# lines. The only option with a default is 'lease'. + +# Currently supported options, for more info, see options.c +opt subnet 255.255.255.0 +#opt timezone +#opt router +#opt timesvr +#opt namesvr +#opt dns +#opt logsvr +#opt cookiesvr +#opt lprsvr +#opt bootsize +#opt domain +#opt swapsvr +#opt rootpath +#opt ipttl +#opt mtu +#opt broadcast +#opt wins +#opt lease +#opt ntpsrv +#opt tftp +#opt bootfile + diff --git a/meta-edison-distro/recipes-connectivity/wpa_supplicant/wpa-supplicant/wpa-supplicant-android-4.4.4_r2.0.1.patch b/meta-edison-distro/recipes-connectivity/wpa_supplicant/wpa-supplicant/wpa-supplicant-android-4.4.4_r2.0.1.patch new file mode 100644 index 0000000..ceee40d --- /dev/null +++ b/meta-edison-distro/recipes-connectivity/wpa_supplicant/wpa-supplicant/wpa-supplicant-android-4.4.4_r2.0.1.patch @@ -0,0 +1,184 @@ + +--- a/wpa_supplicant/src/drivers/driver_nl80211.c 2014-10-01 16:44:14.819137037 +0200 ++++ b/wpa_supplicant/src/drivers/driver_nl80211.c 2014-10-01 16:37:16.979149254 +0200 +@@ -321,7 +321,7 @@ + struct wpa_driver_scan_params *params); + static int android_pno_stop(struct i802_bss *bss); + #endif /* ANDROID */ +-#ifdef ANDROID_P2P ++#if defined(ANDROID_P2P) && !defined(EDISON_TARGET) + int wpa_driver_set_p2p_noa(void *priv, u8 count, int start, int duration); + int wpa_driver_get_p2p_noa(void *priv, u8 *buf, size_t len); + int wpa_driver_set_p2p_ps(void *priv, int legacy_ps, int opp_ps, int ctwindow); +@@ -10329,7 +10329,7 @@ + "opp_ps=%d ctwindow=%d)", legacy_ps, opp_ps, ctwindow); + + if (opp_ps != -1 || ctwindow != -1) +-#ifdef ANDROID_P2P ++#if defined(ANDROID_P2P) && !defined(EDISON_TARGET) + wpa_driver_set_p2p_ps(priv, legacy_ps, opp_ps, ctwindow); + #else + return -1; /* Not yet supported */ +@@ -10832,7 +10832,7 @@ + .update_ft_ies = wpa_driver_nl80211_update_ft_ies, + .get_mac_addr = wpa_driver_nl80211_get_macaddr, + .get_survey = wpa_driver_nl80211_get_survey, +-#ifdef ANDROID_P2P ++#if defined(ANDROID_P2P) && !defined(EDISON_TARGET) + .set_noa = wpa_driver_set_p2p_noa, + .get_noa = wpa_driver_get_p2p_noa, + .set_ap_wps_ie = wpa_driver_set_ap_wps_p2p_ie, + +--- a/wpa_supplicant/wpa_cli.c 2014-10-01 16:52:31.123122526 +0200 ++++ b/wpa_supplicant/wpa_cli.c 2014-10-01 17:05:59.043098904 +0200 +@@ -3625,7 +3625,8 @@ + continue; + #endif /* _DIRENT_HAVE_D_TYPE */ + if (os_strcmp(dent->d_name, ".") == 0 || +- os_strcmp(dent->d_name, "..") == 0) ++ os_strcmp(dent->d_name, "..") == 0 || ++ os_strstr(dent->d_name, "p2p")) + continue; + printf("Selected interface '%s'\n", dent->d_name); + ifname = os_strdup(dent->d_name); + +--- a/wpa_supplicant/p2p_supplicant.c 2014-09-26 12:09:39.856249682 +0200 ++++ b/wpa_supplicant/p2p_supplicant.c 2014-12-17 16:42:39.535846212 +0100 +@@ -3061,6 +3061,13 @@ + int cla, op; + + if (wpa_s->hw.modes == NULL) { ++ wpa_printf(MSG_DEBUG, "P2P: Driver did not support fetching. " ++ "Use supported channels retrieved on interface wlan0"); ++ wpa_s = wpa_s->global->ifaces; ++ ++ } ++ ++ if (wpa_s->hw.modes == NULL) { + wpa_printf(MSG_DEBUG, "P2P: Driver did not support fetching " + "of all supported channels; assume dualband " + "support"); +@@ -3172,7 +3179,8 @@ + } + + +-int wpas_p2p_add_p2pdev_interface(struct wpa_supplicant *wpa_s) ++int wpas_p2p_add_p2pdev_interface(struct wpa_supplicant *wpa_s, ++ const char *conf_p2p_dev) + { + struct wpa_interface iface; + struct wpa_supplicant *p2pdev_wpa_s; +@@ -3198,7 +3206,20 @@ + iface.ifname = wpa_s->pending_interface_name; + iface.driver = wpa_s->driver->name; + iface.driver_param = wpa_s->conf->driver_param; +- iface.confname = wpa_s->confname; ++ ++ /* ++ * If a P2P Device configuration file was given, use it as the interface ++ * configuration file (instead of using parent's configuration file. ++ */ ++ if (conf_p2p_dev) { ++ iface.confname = conf_p2p_dev; ++ iface.ctrl_interface = NULL; ++ } else { ++ iface.confname = wpa_s->confname; ++ iface.ctrl_interface = wpa_s->conf->ctrl_interface; ++ } ++ iface.conf_p2p_dev = NULL; ++ + p2pdev_wpa_s = wpa_supplicant_add_iface(wpa_s->global, &iface); + if (!p2pdev_wpa_s) { + wpa_printf(MSG_DEBUG, "P2P: Failed to add P2P Device interface"); + +--- a/wpa_supplicant/main.c 2014-09-26 12:09:39.856249682 +0200 ++++ b/wpa_supplicant/main.c 2014-12-17 16:42:39.535846212 +0100 +@@ -83,6 +83,9 @@ + #endif /* CONFIG_DBUS */ + printf(" -v = show version\n" + " -W = wait for a control interface monitor before starting\n" ++#ifdef CONFIG_P2P ++ " -m = Configuration file for the P2P Device interface\n" ++#endif /* CONFIG_P2P */ + " -N = start describing new interface\n"); + + printf("example:\n" +@@ -160,7 +163,7 @@ + + for (;;) { + c = getopt(argc, argv, +- "b:Bc:C:D:de:f:g:G:hi:I:KLNo:O:p:P:qsTtuvW"); ++ "b:Bc:C:D:de:f:g:G:hi:I:KLm:No:O:p:P:qsTtuvW"); + if (c < 0) + break; + switch (c) { +@@ -220,6 +223,11 @@ + license(); + exitcode = 0; + goto out; ++#ifdef CONFIG_P2P ++ case 'm': ++ iface->conf_p2p_dev = optarg; ++ break; ++#endif /* CONFIG_P2P */ + case 'o': + params.override_driver = optarg; + break; +@@ -311,7 +319,7 @@ + if (wpa_s->global->p2p == NULL && + (wpa_s->drv_flags & + WPA_DRIVER_FLAGS_DEDICATED_P2P_DEVICE) && +- wpas_p2p_add_p2pdev_interface(wpa_s) < 0) ++ wpas_p2p_add_p2pdev_interface(wpa_s, iface->conf_p2p_dev) < 0) + exitcode = -1; + #endif /* CONFIG_P2P */ + } + +--- a/wpa_supplicant/p2p_supplicant.h 2014-09-26 12:09:39.856249682 +0200 ++++ b/wpa_supplicant/p2p_supplicant.h 2014-12-17 16:42:39.535846212 +0100 +@@ -19,7 +19,8 @@ + int wpas_p2p_init(struct wpa_global *global, struct wpa_supplicant *wpa_s); + void wpas_p2p_deinit(struct wpa_supplicant *wpa_s); + void wpas_p2p_deinit_global(struct wpa_global *global); +-int wpas_p2p_add_p2pdev_interface(struct wpa_supplicant *wpa_s); ++int wpas_p2p_add_p2pdev_interface(struct wpa_supplicant *wpa_s, ++ const char *conf_p2p_dev); + int wpas_p2p_connect(struct wpa_supplicant *wpa_s, const u8 *peer_addr, + const char *pin, enum p2p_wps_method wps_method, + int persistent_group, int auto_join, int join, + +--- a/wpa_supplicant/wpa_supplicant_i.h 2014-09-26 12:09:39.856249682 +0200 ++++ b/wpa_supplicant/wpa_supplicant_i.h 2014-12-17 16:42:39.535846212 +0100 +@@ -63,6 +63,17 @@ + */ + const char *confanother; + ++#ifdef CONFIG_P2P ++ /** ++ * conf_p2p_dev - Configuration file used to hold the ++ * P2P Device configuration parameters. ++ * ++ * This can also be %NULL. In such a case, if a P2P Device dedicated ++ * interfaces is created, the main configuration file will be used. ++ */ ++ const char *conf_p2p_dev; ++#endif /* CONFIG_P2P */ ++ + /** + * ctrl_interface - Control interface parameter + * + +@@ -904,0 +904,0 @@ +--- a/wpa_supplicant/scan.c 2014-09-26 12:09:39.856249682 +0200 ++++ b/wpa_supplicant/scan.c 2014-12-17 16:42:39.535846212 +0100 +@@ -904,7 +904,7 @@ + */ + void wpa_supplicant_req_scan(struct wpa_supplicant *wpa_s, int sec, int usec) + { +-#ifndef ANDROID ++#if !defined(ANDROID) && !defined(EDISON_TARGET) + /* If there's at least one network that should be specifically scanned + * then don't cancel the scan and reschedule. Some drivers do + * background scanning which generates frequent scan results, and that + + diff --git a/meta-edison-distro/recipes-connectivity/wpa_supplicant/wpa-supplicant/wpa-supplicant.sh b/meta-edison-distro/recipes-connectivity/wpa_supplicant/wpa-supplicant/wpa-supplicant.sh new file mode 100644 index 0000000..5c9e5d3 --- /dev/null +++ b/meta-edison-distro/recipes-connectivity/wpa_supplicant/wpa-supplicant/wpa-supplicant.sh @@ -0,0 +1,85 @@ +#!/bin/sh + + +WPA_SUP_BIN="/usr/sbin/wpa_supplicant" +WPA_SUP_PNAME="wpa_supplicant" +WPA_SUP_PIDFILE="/var/run/wpa_supplicant.$IFACE.pid" +WPA_SUP_OPTIONS="-B -P $WPA_SUP_PIDFILE -i $IFACE" + +VERBOSITY=0 + + +if [ -s "$IF_WPA_CONF" ]; then + WPA_SUP_CONF="-c $IF_WPA_CONF" +else + exit 0 +fi + +if [ ! -x "$WPA_SUP_BIN" ]; then + + if [ "$VERBOSITY" = "1" ]; then + echo "$WPA_SUP_PNAME: binaries not executable or missing from $WPA_SUP_BIN" + fi + + exit 1 +fi + +if [ "$MODE" = "start" ] ; then + # driver type of interface, defaults to wext when undefined + if [ -s "/etc/wpa_supplicant/driver.$IFACE" ]; then + IF_WPA_DRIVER=$(cat "/etc/wpa_supplicant/driver.$IFACE") + elif [ -z "$IF_WPA_DRIVER" ]; then + + if [ "$VERBOSITY" = "1" ]; then + echo "$WPA_SUP_PNAME: wpa-driver not provided, using \"wext\"" + fi + + IF_WPA_DRIVER="wext" + fi + + # if we have passed the criteria, start wpa_supplicant + if [ -n "$WPA_SUP_CONF" ]; then + + if [ "$VERBOSITY" = "1" ]; then + echo "$WPA_SUP_PNAME: $WPA_SUP_BIN $WPA_SUP_OPTIONS $WPA_SUP_CONF -D $IF_WPA_DRIVER" + fi + + start-stop-daemon --start --quiet \ + --name $WPA_SUP_PNAME --startas $WPA_SUP_BIN --pidfile $WPA_SUP_PIDFILE \ + -- $WPA_SUP_OPTIONS $WPA_SUP_CONF -D $IF_WPA_DRIVER + fi + + # if the interface socket exists, then wpa_supplicant was invoked successfully + if [ -S "$WPA_COMMON_CTRL_IFACE/$IFACE" ]; then + + if [ "$VERBOSITY" = "1" ]; then + echo "$WPA_SUP_PNAME: ctrl_interface socket located at $WPA_COMMON_CTRL_IFACE/$IFACE" + fi + + exit 0 + + fi + +elif [ "$MODE" = "stop" ]; then + + if [ -f "$WPA_SUP_PIDFILE" ]; then + + if [ "$VERBOSITY" = "1" ]; then + echo "$WPA_SUP_PNAME: terminating $WPA_SUP_PNAME daemon" + fi + + start-stop-daemon --stop --quiet \ + --name $WPA_SUP_PNAME --pidfile $WPA_SUP_PIDFILE + + if [ -S "$WPA_COMMON_CTRL_IFACE/$IFACE" ]; then + rm -f $WPA_COMMON_CTRL_IFACE/$IFACE + fi + + if [ -f "$WPA_SUP_PIDFILE" ]; then + rm -f $WPA_SUP_PIDFILE + fi + fi + +fi + +exit 0 diff --git a/meta-edison-distro/recipes-connectivity/wpa_supplicant/wpa-supplicant/wpa_cli-actions.sh b/meta-edison-distro/recipes-connectivity/wpa_supplicant/wpa-supplicant/wpa_cli-actions.sh new file mode 100644 index 0000000..77b9086 --- /dev/null +++ b/meta-edison-distro/recipes-connectivity/wpa_supplicant/wpa-supplicant/wpa_cli-actions.sh @@ -0,0 +1,88 @@ +#!/bin/sh +# +# This script file is passed as parameter to wpa_cli, started as a daemon, +# so that the wpa_supplicant events are sent to this script +# and actions executed, like : +# - start DHCP client when STA is connected. +# - stop DHCP client when STA is disconnected. +# - start DHCP client when P2P-GC is connected. +# - stop DHCP server when P2P-GO is disconnected. +# +# This script skips events if connmand (connman.service) is started +# Indeed, it is considered that the Wifi connection is managed through +# connmand and not wpa_cli +# + +IFNAME=$1 +CMD=$2 + +kill_daemon() { + NAME=$1 + PF=$2 + + if [ ! -r $PF ]; then + return + fi + + PID=`cat $PF` + if [ $PID -gt 0 ]; then + if ps | grep $NAME | grep $PID; then + kill $PID + fi + fi + if [ -r $PF ]; then + # file can be removed by the deamon when killed + rm $PF + fi +} + +echo "event $CMD received from wpa_supplicant" + +# if Connman is started, ignore wpa_supplicant +# STA connection event because the DHCP connection +# is triggerd by Connman +if [ `systemctl is-active connman` == "active" ] ; then + if [ "$CMD" = "CONNECTED" ] || [ "$CMD" = "DISCONNECTED" ] ; then + echo "event $CMD ignored because Connman is started" + exit 0 + fi +fi + +if [ "$CMD" = "CONNECTED" ]; then + kill_daemon udhcpc /var/run/udhcpc-$IFNAME.pid + udhcpc -i $IFNAME -p /var/run/udhcpc-$IFNAME.pid -S +fi + +if [ "$CMD" = "DISCONNECTED" ]; then + kill_daemon udhcpc /var/run/udhcpc-$IFNAME.pid + ifconfig $IFNAME 0.0.0.0 +fi + +if [ "$CMD" = "P2P-GROUP-STARTED" ]; then + GIFNAME=$3 + if [ "$4" = "GO" ]; then + kill_daemon udhcpc /var/run/udhcpc-$GIFNAME.pid + ifconfig $GIFNAME 192.168.42.1 up + cp /etc/wpa_supplicant/udhcpd-p2p.conf /etc/wpa_supplicant/udhcpd-p2p-itf.conf + sed -i "s/INTERFACE/$GIFNAME/" /etc/wpa_supplicant/udhcpd-p2p-itf.conf + udhcpd /etc/wpa_supplicant/udhcpd-p2p-itf.conf + fi + if [ "$4" = "client" ]; then + kill_daemon udhcpc /var/run/udhcpc-$GIFNAME.pid + kill_daemon udhcpd /var/run/udhcpd-$GIFNAME.pid + udhcpc -i $GIFNAME -p /var/run/udhcpc-$GIFNAME.pid + fi +fi + +if [ "$CMD" = "P2P-GROUP-REMOVED" ]; then + GIFNAME=$3 + if [ "$4" = "GO" ]; then + kill_daemon udhcpd /var/run/udhcpd-$GIFNAME.pid + ifconfig $GIFNAME 0.0.0.0 + fi + if [ "$4" = "client" ]; then + kill_daemon udhcpc /var/run/udhcpc-$GIFNAME.pid + ifconfig $GIFNAME 0.0.0.0 + fi +fi + diff --git a/meta-edison-distro/recipes-connectivity/wpa_supplicant/wpa-supplicant/wpa_supplicant.conf-sane b/meta-edison-distro/recipes-connectivity/wpa_supplicant/wpa-supplicant/wpa_supplicant.conf-sane new file mode 100644 index 0000000..4d37989 --- /dev/null +++ b/meta-edison-distro/recipes-connectivity/wpa_supplicant/wpa-supplicant/wpa_supplicant.conf-sane @@ -0,0 +1,10 @@ +ctrl_interface=/var/run/wpa_supplicant +ctrl_interface_group=0 +config_methods=virtual_push_button virtual_display push_button keypad +update_config=1 +fast_reauth=1 +device_name=Edison +manufacturer=Intel +model_name=Edison + + diff --git a/meta-edison-distro/recipes-connectivity/wpa_supplicant/wpa-supplicant/wpa_supplicant.service b/meta-edison-distro/recipes-connectivity/wpa_supplicant/wpa-supplicant/wpa_supplicant.service new file mode 100644 index 0000000..ec363aa --- /dev/null +++ b/meta-edison-distro/recipes-connectivity/wpa_supplicant/wpa-supplicant/wpa_supplicant.service @@ -0,0 +1,21 @@ +[Unit] +Description=WPA supplicant service +Requires=sys-subsystem-net-devices-wlan0.device +After=sys-subsystem-net-devices-wlan0.device + +[Service] +Type=simple + +# start wpa_supplicant service : +# - the second interface p2p-dev-wlan0 is automatically created at startup +# - the file wpa_supplicant is common to both interfaces wlan0 and p2p-dev-wlan0 +ExecStart=/usr/sbin/wpa_supplicant -u -c/etc/wpa_supplicant/wpa_supplicant.conf -iwlan0 -Dnl80211 -puse_p2p_group_interface=1p2p_device=1 -m/etc/wpa_supplicant/p2p_supplicant.conf -O /var/run/wpa_supplicant -e /etc/wpa_supplicant/entropy.bin + +# start wpa_supplicant_event service after the start of wpa_supplicant service +ExecStartPost=/bin/systemctl start wpa_supplicant_wlan0_event ; /bin/systemctl start wpa_supplicant_p2p_event + +# stop wpa_supplicant_event service after the stop of wpa_supplicant service +ExecStopPost=/bin/systemctl stop wpa_supplicant_wlan0_event ; /bin/systemctl stop wpa_supplicant_p2p_event + +[Install] +WantedBy=multi-user.target diff --git a/meta-edison-distro/recipes-connectivity/wpa_supplicant/wpa-supplicant/wpa_supplicant_p2p_event.service b/meta-edison-distro/recipes-connectivity/wpa_supplicant/wpa-supplicant/wpa_supplicant_p2p_event.service new file mode 100644 index 0000000..b5445a2 --- /dev/null +++ b/meta-edison-distro/recipes-connectivity/wpa_supplicant/wpa-supplicant/wpa_supplicant_p2p_event.service @@ -0,0 +1,13 @@ +[Unit] +Description=Daemon to receive the wpa_supplicant event +Requires=sys-subsystem-net-devices-wlan0.device +After=sys-subsystem-net-devices-wlan0.device + +[Service] +Type=simple +ExecStart=/usr/sbin/wpa_cli -a /etc/wpa_supplicant/wpa_cli-actions.sh -i p2p-dev-wlan0 +Restart=on-failure +RestartSec=1 + +[Install] +WantedBy=multi-user.target diff --git a/meta-edison-distro/recipes-connectivity/wpa_supplicant/wpa-supplicant/wpa_supplicant_wlan0_event.service b/meta-edison-distro/recipes-connectivity/wpa_supplicant/wpa-supplicant/wpa_supplicant_wlan0_event.service new file mode 100644 index 0000000..7428b4c --- /dev/null +++ b/meta-edison-distro/recipes-connectivity/wpa_supplicant/wpa-supplicant/wpa_supplicant_wlan0_event.service @@ -0,0 +1,13 @@ +[Unit] +Description=Daemon to receive the wpa_supplicant event +Requires=sys-subsystem-net-devices-wlan0.device +After=sys-subsystem-net-devices-wlan0.device + +[Service] +Type=simple +ExecStart=/usr/sbin/wpa_cli -a /etc/wpa_supplicant/wpa_cli-actions.sh -i wlan0 +Restart=on-failure +RestartSec=1 + +[Install] +WantedBy=multi-user.target diff --git a/meta-edison-distro/recipes-connectivity/wpa_supplicant/wpa-supplicant_2.1.bbappend b/meta-edison-distro/recipes-connectivity/wpa_supplicant/wpa-supplicant_2.1.bbappend new file mode 100644 index 0000000..5063afd --- /dev/null +++ b/meta-edison-distro/recipes-connectivity/wpa_supplicant/wpa-supplicant_2.1.bbappend @@ -0,0 +1,96 @@ +LIC_FILES_CHKSUM = "file://COPYING;md5=ab87f20cd7e8c0d0a6539b34d3791d0e \ + file://README;md5=5c7cc1ea1a4d82b1cbe9a02fe92881b8 \ + file://wpa_supplicant/wpa_supplicant.c;beginline=1;endline=12;md5=cba4fa09fa364da845ca546f21008909" + +RRECOMMENDS_${PN} = "wpa-supplicant-passphrase wpa-supplicant-cli" + + +SYSTEMD_SERVICE_${PN} = "wpa_supplicant.service wpa_supplicant_wlan0_event.service wpa_supplicant_p2p_event.service" + +FILESEXTRAPATHS_prepend := "${THISDIR}/wpa-supplicant:" + +PV = "android-4.4.4_r2.0.1" + +BASE_SRC_URI = "file://defconfig-gnutls \ + file://wpa_supplicant.conf-sane \ + file://p2p_supplicant.conf-sane \ + file://99_wpa_supplicant \ + file://fi.w1.wpa_supplicant1.service \ + file://udhcpd-p2p.conf \ + file://wpa_supplicant.service \ + file://wpa_supplicant_wlan0_event.service \ + file://wpa_supplicant_p2p_event.service \ + file://wpa-supplicant.sh \ + file://wpa-supplicant-${PV}.patch \ + file://wpa_cli-actions.sh " + +SRC_URI = "${BASE_SRC_URI} \ + git://android.googlesource.com/platform/external/wpa_supplicant_8;protocol=https;tag=android-4.4.4_r2.0.1" + +S = "${WORKDIR}/git" +PR = "r1" + +SRC_URI[md5sum] = "f2ed8fef72cf63d8d446a2d0a6da630a" +SRC_URI[sha256sum] = "eaaa5bf3055270e521b2dff64f2d203ec8040f71958b8588269a82c00c9d7b6a" + +FILES_${PN} += "${datadir}/dbus-1/system-services/* \ + ${systemd_unitdir}/system/ \ + ${sysconfdir}/systemd/" + + +do_compile () { + unset CFLAGS CPPFLAGS CXXFLAGS + sed -e "s:CFLAGS\ =.*:& \$(EXTRA_CFLAGS):g" ${S}/src/lib.rules > ${B}/src/lib.rules + oe_runmake -C wpa_supplicant +} + +# Use do_install instead of do_install_append to skip un-needed/un-used files +# added by do_install() in wpa_supplicant.inc +do_install () { + install -d ${D}${sbindir} + install -m 755 wpa_supplicant/wpa_supplicant ${D}${sbindir} + install -m 755 wpa_supplicant/wpa_cli ${D}${sbindir} + + install -d ${D}${bindir} + install -m 755 wpa_supplicant/wpa_passphrase ${D}${bindir} + + install -d ${D}${sysconfdir}/wpa_supplicant + install -m 600 ${WORKDIR}/wpa_supplicant.conf-sane ${D}${sysconfdir}/wpa_supplicant/wpa_supplicant.conf + install -m 600 ${WORKDIR}/p2p_supplicant.conf-sane ${D}${sysconfdir}/wpa_supplicant/p2p_supplicant.conf + + install -d ${D}/${sysconfdir}/dbus-1/system.d + install -m 644 ${S}/wpa_supplicant/dbus/dbus-wpa_supplicant.conf ${D}/${sysconfdir}/dbus-1/system.d + install -d ${D}/${datadir}/dbus-1/system-services + install -m 644 ${B}/wpa_supplicant/dbus/*.service ${D}/${datadir}/dbus-1/system-services + # overwrite the service file with our modified one + install -m 644 ${WORKDIR}/fi.w1.wpa_supplicant1.service ${D}/${datadir}/dbus-1/system-services + + if ${@base_contains('DISTRO_FEATURES','systemd','true','false',d)}; then + + install -d ${D}/${systemd_unitdir}/system + install -d ${D}${sysconfdir}/systemd/system/multi-user.target.wants + + # Install the wpa_supplicant service + install -m 644 ${WORKDIR}/wpa_supplicant.service ${D}${systemd_unitdir}/system + + # Install wpa_supplicant_event service for udhcp client start/stop based on wifi connection/disconnection + install -m 755 ${WORKDIR}/wpa_cli-actions.sh ${D}${sysconfdir}/wpa_supplicant + install -m 644 ${WORKDIR}/wpa_supplicant_wlan0_event.service ${D}${systemd_unitdir}/system + install -m 644 ${WORKDIR}/wpa_supplicant_p2p_event.service ${D}${systemd_unitdir}/system + + # Install udhcp server configuration file for P2P GO + install -m 644 ${WORKDIR}/udhcpd-p2p.conf ${D}${sysconfdir}/wpa_supplicant + fi + + install -d ${D}/etc/default/volatiles + install -m 0644 ${WORKDIR}/99_wpa_supplicant ${D}/etc/default/volatiles +} + +pkg_postinst_wpa-supplicant () { + # If we're offline, we don't need to do this. + if [ "x$D" != "x" ]; then + exit 0 + fi + + killall -q -HUP dbus-daemon || true +} diff --git a/meta-edison-distro/recipes-core/base-files/base-files/factory.mount b/meta-edison-distro/recipes-core/base-files/base-files/factory.mount new file mode 100644 index 0000000..2619c96 --- /dev/null +++ b/meta-edison-distro/recipes-core/base-files/base-files/factory.mount @@ -0,0 +1,12 @@ +[Unit] +Description=Mount for factory + +[Install] +WantedBy=default.target + +[Mount] +What=/dev/disk/by-partlabel/factory +Where=/factory +Options=ro,noauto,x-systemd.automount,nosuid,nodev,noatime,discard,barrier=1,data=ordered,noauto_da_alloc +Type=ext4 +TimeoutSec=3 diff --git a/meta-edison-distro/recipes-core/base-files/base-files/fstab b/meta-edison-distro/recipes-core/base-files/base-files/fstab new file mode 100644 index 0000000..55edeef --- /dev/null +++ b/meta-edison-distro/recipes-core/base-files/base-files/fstab @@ -0,0 +1,9 @@ +rootfs / auto nodev,noatime,discard,barrier=1,data=ordered,noauto_da_alloc 1 1 +proc /proc proc defaults 0 0 +devpts /dev/pts devpts mode=0620,gid=5 0 0 +usbdevfs /proc/bus/usb usbdevfs auto 0 0 +tmpfs /run tmpfs mode=0755,nodev,nosuid,strictatime 0 0 +tmpfs /var/volatile tmpfs defaults 0 0 + +/dev/disk/by-partlabel/boot /boot auto noauto,x-systemd.automount,nosuid,nodev,noatime,discard 1 1 +/dev/disk/by-partlabel/home /home auto noauto,x-systemd.automount,nosuid,nodev,noatime,discard,barrier=1,data=ordered,noauto_da_alloc 1 1 diff --git a/meta-edison-distro/recipes-core/base-files/base-files/media-sdcard.automount b/meta-edison-distro/recipes-core/base-files/base-files/media-sdcard.automount new file mode 100644 index 0000000..a577591 --- /dev/null +++ b/meta-edison-distro/recipes-core/base-files/base-files/media-sdcard.automount @@ -0,0 +1,11 @@ +[Unit] +Description=Automount for SDCard +ConditionPathExists=/dev/mmcblk1p1 +RefuseManualStart=true +RefuseManualStop=true + +[Automount] +Where=/media/sdcard + +[Install] +WantedBy=local-fs.target diff --git a/meta-edison-distro/recipes-core/base-files/base-files/media-sdcard.mount b/meta-edison-distro/recipes-core/base-files/base-files/media-sdcard.mount new file mode 100644 index 0000000..a9d310b --- /dev/null +++ b/meta-edison-distro/recipes-core/base-files/base-files/media-sdcard.mount @@ -0,0 +1,9 @@ +[Unit] +Description=Mount for SDCard +BindsTo=dev-mmcblk1p1.device +Conflicts=media-sdcard.automount + +[Mount] +What=/dev/mmcblk1p1 +Where=/media/sdcard +TimeoutSec=3 diff --git a/meta-edison-distro/recipes-core/base-files/base-files/share/dot.profile b/meta-edison-distro/recipes-core/base-files/base-files/share/dot.profile new file mode 100644 index 0000000..4f1d2a0 --- /dev/null +++ b/meta-edison-distro/recipes-core/base-files/base-files/share/dot.profile @@ -0,0 +1,9 @@ +# ~/.profile: executed by Bourne-compatible login shells. + +if [ -f ~/.bashrc ]; then + . ~/.bashrc +fi + +# path set by /etc/profile +# export PATH + diff --git a/meta-edison-distro/recipes-core/base-files/base-files_3.0.14.bbappend b/meta-edison-distro/recipes-core/base-files/base-files_3.0.14.bbappend new file mode 100644 index 0000000..dd8d96a --- /dev/null +++ b/meta-edison-distro/recipes-core/base-files/base-files_3.0.14.bbappend @@ -0,0 +1,33 @@ +FILESEXTRAPATHS_prepend := "${THISDIR}/base-files:" +SRC_URI += "file://fstab" +SRC_URI += "file://media-sdcard.mount" +SRC_URI += "file://media-sdcard.automount" +SRC_URI += "file://factory.mount" +SRC_URI += "file://share/dot.profile" + +# override default volatile to suppress var/log link creation +volatiles = "tmp" + +do_install_append() { + install -m 0644 ${WORKDIR}/fstab ${D}${sysconfdir}/fstab + install -m 0755 ${WORKDIR}/share/dot.profile ${D}${sysconfdir}/skel/.profile + + # enable mount of the SDCard in /media/sdcard when inserted + install -d ${D}${systemd_unitdir}/system + install -c -m 0644 ${WORKDIR}/media-sdcard.mount ${D}${systemd_unitdir}/system + install -c -m 0644 ${WORKDIR}/media-sdcard.automount ${D}${systemd_unitdir}/system + install -c -m 0644 ${WORKDIR}/factory.mount ${D}${systemd_unitdir}/system + # Enable the service + install -d ${D}${sysconfdir}/systemd/system/local-fs.target.wants + ln -sf ${systemd_unitdir}/system/media-sdcard.automount \ + ${D}${sysconfdir}/systemd/system/local-fs.target.wants/media-sdcard.automount + install -d ${D}${sysconfdir}/systemd/system/default.target.wants + ln -sf ${systemd_unitdir}/system/factory.mount \ + ${D}${sysconfdir}/systemd/system/default.target.wants/factory.mount + +} + +FILES_${PN} += "${base_libdir}/systemd/system/*.mount" +FILES_${PN} += "${base_libdir}/systemd/system/*.automount" +FILES_${PN} += "${sysconfdir}/systemd/system/default.target.wants/*.mount" +FILES_${PN} += "${sysconfdir}/systemd/system/local-fs.target.wants/*.automount" diff --git a/meta-edison-distro/recipes-core/busybox/busybox_1.22.1.bbappend b/meta-edison-distro/recipes-core/busybox/busybox_1.22.1.bbappend new file mode 100644 index 0000000..faf18af --- /dev/null +++ b/meta-edison-distro/recipes-core/busybox/busybox_1.22.1.bbappend @@ -0,0 +1,5 @@ +# to get brctl and log configuration settings +FILESEXTRAPATHS_prepend := "${THISDIR}/files/:" + +SRC_URI += "file://brctl-utilities.cfg \ + file://busybox-log.cfg " diff --git a/meta-edison-distro/recipes-core/busybox/files/brctl-utilities.cfg b/meta-edison-distro/recipes-core/busybox/files/brctl-utilities.cfg new file mode 100644 index 0000000..53d4ead --- /dev/null +++ b/meta-edison-distro/recipes-core/busybox/files/brctl-utilities.cfg @@ -0,0 +1,2 @@ +CONFIG_BRCTL=y +CONFIG_FEATURE_BRCTL_SHOW=y diff --git a/meta-edison-distro/recipes-core/busybox/files/busybox-log.cfg b/meta-edison-distro/recipes-core/busybox/files/busybox-log.cfg new file mode 100644 index 0000000..7b7408f --- /dev/null +++ b/meta-edison-distro/recipes-core/busybox/files/busybox-log.cfg @@ -0,0 +1,3 @@ +CONFIG_KLOGD=n +CONFIG_SYSLOGD=n + diff --git a/meta-edison-distro/recipes-core/first-install/files/first-install.service b/meta-edison-distro/recipes-core/first-install/files/first-install.service new file mode 100644 index 0000000..3ebb9d7 --- /dev/null +++ b/meta-edison-distro/recipes-core/first-install/files/first-install.service @@ -0,0 +1,9 @@ +[Unit] +Description=First install service +OnFailure=reboot.target +Requires=dev-disk-by\x2dpartlabel-home.device dev-disk-by\x2dpartlabel-update.device +After=dev-disk-by\x2dpartlabel-home.device dev-disk-by\x2dpartlabel-update.device +[Service] +ExecStart=@BASE_BINDIR@/sh -c "shell='sh'; if [ -f /bin/bash ]; then shell='bash'; fi; @BASE_BINDIR@/$shell @BASE_SBINDIR@/first-install.sh systemd-service" +StandardOutput=journal+console + diff --git a/meta-edison-distro/recipes-core/first-install/files/first-install.sh b/meta-edison-distro/recipes-core/first-install/files/first-install.sh new file mode 100644 index 0000000..1b29245 --- /dev/null +++ b/meta-edison-distro/recipes-core/first-install/files/first-install.sh @@ -0,0 +1,185 @@ +#!/bin/bash +# first install script to do post flash install + +# global variable set to 1 if output is systemd journal +fi_journal_out=0 + +export PATH="$PATH:/usr/sbin/" + +# handle argument, if first-install is called from systemd service +# arg1 is "systemd-service" +if [ "$1" == "systemd-service" ]; then fi_journal_out=1; fi; + +#echo function to output to journal system or in colored terminal +#arg $1 message +#arg $2 log level +fi_echo () { + lg_lvl=${2:-"log"} + msg_prefix="" + msg_suffix="" + case "$lg_lvl" in + log) if [ $fi_journal_out -eq 1 ]; then msg_prefix="<5>"; else msg_prefix="\033[1m"; msg_suffix="\033[0m"; fi;; + err) if [ $fi_journal_out -eq 1 ]; then msg_prefix="<1>"; else msg_prefix="\033[31;40m\033[1m"; msg_suffix="\033[0m"; fi;; + esac + printf "${msg_prefix}${1}${msg_suffix}\n" +} + +# set_retry_count to failure file +# arg $1 new retry count +set_retry_count () { + fw_setenv first_install_retry $1 +} + +# get_retry_count from failure from bootloader +get_retry_count () { + retry_count=$(fw_printenv first_install_retry | tr -d "first_install_retry=") + [ -z $retry_count ] && { set_retry_count 0; retry_count=0;} + return $retry_count +} + +# exit first_install by rebooting and handling the failure by setting +# the firmware target according to failure or success +# on failure increment fail count and reboot +# on success reboot in multi-user target +# arg $1 exit code +exit_first_install () { + if [ $1 -eq 0 ]; then + # reset failure count + set_retry_count 0 + # update firmware target + # next reboot will be on multi-user target + fw_setenv bootargs_target multi-user + fi + # dump journal to log file + journalctl -u first-install -o short-iso >> /first-install.log + systemctl daemon-reload + systemctl stop home.mount + systemctl default +} + +# continue normal flow or exit on error code +# arg $1 : return code to check +# arg $2 : string resuming the action +fi_assert () { + if [ $1 -ne 0 ]; then + fi_echo "${2} : Failed ret($1)" err; + exit_first_install $1; + else + fi_echo "${2} : Success"; + fi +} + +factory_partition () { + mkdir -p /factory + mount /dev/disk/by-partlabel/factory /factory + # test can fail if done during manufacturing + if [ $? -ne 0 ]; + then + mkfs.ext4 /dev/disk/by-partlabel/factory + mount /dev/disk/by-partlabel/factory /factory + echo "00:11:22:33:55:66" > /factory/bluetooth_address + echo "VSPPYWWDXXXXXNNN" > /factory/serial_number + fi +} + +# generate sshd keys +sshd_init () { + rm -rf /etc/ssh/*key* + systemctl start sshdgenkeys +} + + +# Substitute the SSID and passphrase in the file /etc/hostapd/hostapd.conf +# The SSID is built from the hostname and a serial number to have a +# unique SSID in case of multiple Edison boards having their WLAN AP active. +setup_ap_ssid_and_passphrase () { + # factory_serial is 16 bytes long + if [ -f /sys/class/net/wlan0/address ]; + then + ifconfig wlan0 up + wlan0_addr=$(cat /sys/class/net/wlan0/address | tr '[:lower:]' '[:upper:]') + ssid="EDISON-${wlan0_addr:12:2}-${wlan0_addr:15:2}" + + # Substitute the SSID + sed -i -e 's/^ssid=.*/ssid='${ssid}'/g' /etc/hostapd/hostapd.conf + fi + + if [ -f /factory/serial_number ] ; + then + factory_serial=$(head -n1 /factory/serial_number | tr '[:lower:]' '[:upper:]') + passphrase="${factory_serial}" + + # Substitute the passphrase + sed -i -e 's/^wpa_passphrase=.*/wpa_passphrase='${passphrase}'/g' /etc/hostapd/hostapd.conf + fi + + sync +} + + +# script main part + +# print to journal the current retry count +get_retry_count +retry_count=$? +set_retry_count $((${retry_count} + 1)) +fi_echo "Starting First Install (try: ${retry_count})" + +# format partition home to ext4 +mkfs.ext4 -m0 /dev/disk/by-partlabel/home +fi_assert $? "Formatting home partition" + +# backup initial /home/root directory +mkdir /tmp/oldhome +cp -R /home/* /tmp/oldhome/ +fi_assert $? "Backup home/root contents of rootfs" + +# mount home partition on /home +mount /dev/disk/by-partlabel/home /home +fi_assert $? "Mount /home partition" + +# copy back contents to /home and cleanup +mv /tmp/oldhome/* /home/ +rm -rf /tmp/oldhome +fi_assert $? "Restore home/root contents on new /home partition" + +# create a fat32 primary partition on all available space +echo -ne "n\np\n1\n\n\nt\nb\np\nw\n" | fdisk /dev/disk/by-partlabel/update + +# silent error code for now because fdisk failed to reread MBR correctly +# MBR is correct but fdisk understand it as the main system MBR, which is +# not the case. +fi_assert 0 "Formatting update partition Step 1" + +# create a loop device on update disk +losetup -o 8192 /dev/loop0 /dev/disk/by-partlabel/update +fi_assert $? "Formatting update partition Step 2" + +# format update partition +mkfs.vfat /dev/loop0 -n "Edison" -F 32 +fi_assert $? "Formatting update partition Step 3" + +# remove loop device on update disk +losetup -d /dev/loop0 +fi_assert $? "Formatting update partition Step 4 final" + +# handle factory partition +factory_partition + +# ssh +sshd_init +fi_assert $? "Generating sshd keys" + +# update entry in /etc/fstab to enable auto mount +sed -i 's/#\/dev\/disk\/by-partlabel/\/dev\/disk\/by-partlabel/g' /etc/fstab +fi_assert $? "Update file system table /etc/fstab" + +# Setup Access Point SSID and passphrase +setup_ap_ssid_and_passphrase +fi_assert $? "Generating Wifi Access Point SSID and passphrase" + +fi_echo "First install success" + +# end main part +exit_first_install 0 + diff --git a/meta-edison-distro/recipes-core/first-install/files/first-install.target b/meta-edison-distro/recipes-core/first-install/files/first-install.target new file mode 100644 index 0000000..e005f55 --- /dev/null +++ b/meta-edison-distro/recipes-core/first-install/files/first-install.target @@ -0,0 +1,7 @@ +[Unit] +Description=First Install target +Requires=sysinit.target +Conflicts=shutdown.target systemd-readahead-collect.service systemd-readahead-replay.service home.automount factory.automount +After=sysinit.target +Before=shutdown.target +AllowIsolate=yes diff --git a/meta-edison-distro/recipes-core/first-install/first-install.bb b/meta-edison-distro/recipes-core/first-install/first-install.bb new file mode 100644 index 0000000..c04b930 --- /dev/null +++ b/meta-edison-distro/recipes-core/first-install/first-install.bb @@ -0,0 +1,40 @@ +DESCRIPTION = "First install systemd target" +LICENSE = "GPLv2+" +LIC_FILES_CHKSUM = "file://${COREBASE}/meta/files/common-licenses/GPL-2.0;md5=801f80980d171dd6425610833a22dbe6" + +SRC_URI = "file://first-install.service \ + file://first-install.target \ + file://first-install.sh" + +SYSTEMD_SERVICE_${PN} = "first-install.service" + +RDEPENDS_${PN} = "systemd" + +do_install() { + install -d ${D}/sbin + install -c -m 0744 ${WORKDIR}/first-install.sh ${D}/sbin + install -d ${D}${systemd_unitdir}/system + install -d ${D}${sysconfdir}/systemd/system/first-install.target.wants + install -c -m 0644 ${WORKDIR}/first-install.target ${D}${systemd_unitdir}/system + install -c -m 0644 ${WORKDIR}/first-install.service ${D}${systemd_unitdir}/system + sed -i -e 's,@BASE_BINDIR@,${base_bindir},g' \ + -e 's,@BASE_SBINDIR@,${base_sbindir},g' \ + -e 's,@SBINDIR@,${sbindir},g' \ + -e 's,@BINDIR@,${bindir},g' \ + ${D}${systemd_unitdir}/system/first-install.service + + # enable services + ln -sf ${systemd_unitdir}/system/first-install.service \ + ${D}${sysconfdir}/systemd/system/first-install.target.wants/first-install.service +} + +FILES_${PN} = "${base_libdir}/systemd/system/*.service \ + ${base_libdir}/systemd/system/first-install.target \ + ${sysconfdir} \ + /sbin/first-install.sh" + +# As this package is tied to systemd, only build it when we're also building systemd. +python () { + if not oe.utils.contains ('DISTRO_FEATURES', 'systemd', True, False, d): + raise bb.parse.SkipPackage("'systemd' not in DISTRO_FEATURES") +} diff --git a/meta-edison-distro/recipes-core/images/edison-image.bb b/meta-edison-distro/recipes-core/images/edison-image.bb new file mode 100644 index 0000000..f106657 --- /dev/null +++ b/meta-edison-distro/recipes-core/images/edison-image.bb @@ -0,0 +1,130 @@ +DESCRIPTION = "A fully functional image to run EDISON" +LIC_FILES_CHKSUM = "file://${COREBASE}/LICENSE;md5=4d92cd373abda3937c2bc47fbc49d690 \ + file://${COREBASE}/meta/COPYING.MIT;md5=3da9cfbcb788c80a0384361b4de20420" +LICENSE = "MIT" +IMAGE_INSTALL = "packagegroup-core-boot ${ROOTFS_PKGMANAGE_BOOTSTRAP} ${CORE_IMAGE_EXTRA_INSTALL}" +IMAGE_INSTALL += "openssh-sftp-server" + +IMAGE_LINGUAS = " " + +INITRD = "" +INITRD_IMAGE = "" + +# Do not use legacy nor EFI BIOS +PCBIOS = "0" +# Do not support bootable USB stick +NOISO = "1" +ROOTFS = "" + +# This is useless stuff, but necessary for building because +# inheriting bootimg also brings syslinux in.. +AUTO_SYSLINUXCFG = "1" +SYSLINUX_ROOT = "" +SYSLINUX_TIMEOUT ?= "10" +SYSLINUX_LABELS ?= "boot install" +LABELS_append = " ${SYSLINUX_LABELS} " + + +# Specify rootfs image type +IMAGE_FSTYPES = "ext4" + +inherit core-image + +# This has to be set after including core-image otherwise it's overriden with "1" +# and this cancel creation of the boot hddimg +NOHDD = "0" + +inherit bootimg +do_bootimg[depends] += "${PN}:do_rootfs" + +IMAGE_ROOTFS_SIZE = "524288" + +IMAGE_FEATURES += "package-management ssh-server-openssh" +# Allow passwordless root login and postinst logging +IMAGE_FEATURES += "debug-tweaks" + +IMAGE_INSTALL += "connman" +IMAGE_INSTALL += "connman-client" +IMAGE_INSTALL += "connman-tools" +IMAGE_INSTALL += "wireless-tools" +IMAGE_INSTALL += "wpa-supplicant" +IMAGE_INSTALL += "hostapd-daemon" +IMAGE_INSTALL += "bluez5-dev" +IMAGE_INSTALL += "bluez5-obex" +IMAGE_INSTALL += "kernel-modules" +IMAGE_INSTALL += "ethtool" +IMAGE_INSTALL += "iptables" +IMAGE_INSTALL += "libstdc++" +IMAGE_INSTALL += "u-boot" +IMAGE_INSTALL += "u-boot-fw-utils" +IMAGE_INSTALL += "file" +IMAGE_INSTALL += "pciutils" +IMAGE_INSTALL += "usbutils" +IMAGE_INSTALL += "ldd" +IMAGE_INSTALL += "i2c-tools" +IMAGE_INSTALL += "watchdog-sample" +IMAGE_INSTALL += "pwr-button-handler" +IMAGE_INSTALL += "blink-led" +IMAGE_INSTALL += "first-install" +IMAGE_INSTALL += "resize-rootfs" +IMAGE_INSTALL += "systemd-analyze" +IMAGE_INSTALL += "wget" +IMAGE_INSTALL += "ota-update" + +# Allows to enable OpenMP feature +IMAGE_INSTALL += "libgomp" + +# Add audio firmware +IMAGE_INSTALL += "sst-fw-bin" + +# ALSA lib and utilities +IMAGE_INSTALL += "alsa-lib" +IMAGE_INSTALL += "alsa-utils-alsamixer alsa-utils-alsactl alsa-utils-aplay alsa-utils-amixer" + +# Python and some basic modules +IMAGE_INSTALL += "python" +IMAGE_INSTALL += "python-dbus python-smartpm python-pygobject python-argparse" +IMAGE_INSTALL += "python-distutils python-pkgutil python-audio python-image python-imaging python-email python-netserver python-xmlrpc python-ctypes python-html python-json python-compile python-misc python-numbers python-unittest python-pydoc" + +# Wifi firmware +IMAGE_INSTALL += "bcm43340-fw" +# Bluetooth Firmware patch for 43340 and its patch utility +IMAGE_INSTALL += "bcm43340-bt" +# service daemon that listens to rfkill events and trigger FW patch download +IMAGE_INSTALL += "bluetooth-rfkill-event" +# Wifi driver built as a kernel module +IMAGE_INSTALL += "bcm43340-mod" + +# Provides strace and gdb +IMAGE_FEATURES += "tools-debug" +IMAGE_INSTALL += "crashlog" + +# Clean corrupted journald entries +IMAGE_INSTALL += "cleanjournal" + +# Adds various other tools +IMAGE_INSTALL += "tcpdump" +IMAGE_INSTALL += "net-tools" +IMAGE_INSTALL += "lsof" +IMAGE_INSTALL += "iperf" + +# Add pulseaudio +IMAGE_INSTALL += "pulseaudio-server libpulsecore libpulsecommon libpulse libpulse-simple pulseaudio-misc pulseaudio-service" + +# Add Mplayer +IMAGE_INSTALL += "mplayer" + +# Those are necessary to manually create partitions and file systems on the eMMC +IMAGE_INSTALL += "parted" +IMAGE_INSTALL += "e2fsprogs-e2fsck e2fsprogs-mke2fs e2fsprogs-tune2fs e2fsprogs-badblocks libcomerr libss libe2p libext2fs dosfstools" + +# Time related +IMAGE_INSTALL += "tzdata" + +# SWIG +IMAGE_INSTALL += "swig" + +# INTEL MCU FW +IMAGE_INSTALL += "mcu-fw-load" +IMAGE_INSTALL += "mcu-fw-bin" + diff --git a/meta-edison-distro/recipes-core/ota-update/files/ota-update.service b/meta-edison-distro/recipes-core/ota-update/files/ota-update.service new file mode 100644 index 0000000..bc43401 --- /dev/null +++ b/meta-edison-distro/recipes-core/ota-update/files/ota-update.service @@ -0,0 +1,9 @@ +[Unit] +Description=OTA update service +OnFailure=reboot.target +Requires=dev-disk-by\x2dpartlabel-home.device dev-disk-by\x2dpartlabel-update.device +After=dev-disk-by\x2dpartlabel-home.device dev-disk-by\x2dpartlabel-update.device +[Service] +ExecStart=@BASE_BINDIR@/sh -c "shell='sh'; if [ -f /bin/bash ]; then shell='bash'; fi; @BASE_BINDIR@/$shell @BASE_SBINDIR@/ota-update.sh systemd-service" +StandardOutput=journal+console + diff --git a/meta-edison-distro/recipes-core/ota-update/files/ota-update.sh b/meta-edison-distro/recipes-core/ota-update/files/ota-update.sh new file mode 100644 index 0000000..cfbe8ea --- /dev/null +++ b/meta-edison-distro/recipes-core/ota-update/files/ota-update.sh @@ -0,0 +1,149 @@ +#!/bin/bash +# FIXME: function definition shall be moved to a common script + +# global variable set to 1 if output is systemd journal +fi_journal_out=0 + +export PATH="$PATH:/usr/sbin/" + +# handle argument, if ota-update is called from systemd service +# arg1 is "systemd-service" +if [ "$1" == "systemd-service" ]; then fi_journal_out=1; fi; + +#echo function to output to journal system or in colored terminal +#arg $1 message +#arg $2 log level +fi_echo () { + lg_lvl=${2:-"log"} + msg_prefix="" + msg_suffix="" + case "$lg_lvl" in + log) if [ $fi_journal_out -eq 1 ]; then msg_prefix="<5>"; else msg_prefix="\033[1m"; msg_suffix="\033[0m"; fi;; + err) if [ $fi_journal_out -eq 1 ]; then msg_prefix="<1>"; else msg_prefix="\033[31;40m\033[1m"; msg_suffix="\033[0m"; fi;; + esac + printf "${msg_prefix}${1}${msg_suffix}\n" +} + +# set_retry_count to failure file +# arg $1 new retry count +set_retry_count () { + fw_setenv ota_update_retry $1 +} + +# get_retry_count from failure from bootloader +get_retry_count () { + retry_count=$(fw_printenv ota_update_retry | tr -d "ota_update_retry=") + [ -z $retry_count ] && { set_retry_count 0; retry_count=0;} + return $retry_count +} + +# exit ota_update by rebooting and handling the failure by setting +# the firmware target according to failure or success +# on failure increment fail count and reboot +# on success reboot in multi-user target +# arg $1 exit code +exit_ota_update () { + if [ $1 -eq 0 ]; then + # reset failure count + set_retry_count 0 + # update firmware target + # next reboot will be on multi-user target + fw_setenv bootargs_target multi-user + fi + + fi_echo "Rebooting...." + # dump journal to log file + journalctl -u ota-update -o short-iso >> /ota-update.log + systemctl daemon-reload + systemctl stop home.mount + systemctl default +} + +# continue normal flow or exit on error code +# arg $1 : return code to check +# arg $2 : string resuming the action +fi_assert () { + if [ $1 -ne 0 ]; then + fi_echo "${2} : Failed ret($1)" err; + exit_ota_update $1; + else + fi_echo "${2} : Success"; + fi +} + +factory_partition () { + mkdir -p /factory + mount /dev/disk/by-partlabel/factory /factory + # test can fail if done during manufacturing + if [ $? -ne 0 ]; + then + mkfs.ext4 /dev/disk/by-partlabel/factory + mount /dev/disk/by-partlabel/factory /factory + echo "00:11:22:33:55:66" > /factory/bluetooth_address + echo "VSPPYWWDXXXXXNNN" > /factory/serial_number + fi +} + +# generate sshd keys +sshd_init () { + rm -rf /etc/ssh/*key* + systemctl start sshdgenkeys +} + + +# Substitute the SSID and passphrase in the file /etc/hostapd/hostapd.conf +# The SSID is built from the hostname and a serial number to have a +# unique SSID in case of multiple Edison boards having their WLAN AP active. +setup_ap_ssid_and_passphrase () { + # factory_serial is 16 bytes long + if [ -f /sys/class/net/wlan0/address ]; + then + ifconfig wlan0 up + wlan0_addr=$(cat /sys/class/net/wlan0/address | tr '[:lower:]' '[:upper:]') + ssid="EDISON-${wlan0_addr:12:2}-${wlan0_addr:15:2}" + + # Substitute the SSID + sed -i -e 's/^ssid=.*/ssid='${ssid}'/g' /etc/hostapd/hostapd.conf + fi + + if [ -f /factory/serial_number ] ; + then + factory_serial=$(head -n1 /factory/serial_number | tr '[:lower:]' '[:upper:]') + passphrase="${factory_serial}" + + # Substitute the passphrase + sed -i -e 's/^wpa_passphrase=.*/wpa_passphrase='${passphrase}'/g' /etc/hostapd/hostapd.conf + fi + + sync +} + + +# script main part + +# print to journal the current retry count +get_retry_count +retry_count=$? +set_retry_count $((${retry_count} + 1)) +fi_echo "Starting OTA update (try: ${retry_count})" + +# handle factory partition +factory_partition + +# ssh +sshd_init +fi_assert $? "Generating sshd keys" + +# update entry in /etc/fstab to enable auto mount +sed -i 's/#\/dev\/disk\/by-partlabel/\/dev\/disk\/by-partlabel/g' /etc/fstab +fi_assert $? "Update file system table /etc/fstab" + +# Setup Access Point SSID and passphrase +setup_ap_ssid_and_passphrase +fi_assert $? "Generating Wifi Access Point SSID and passphrase" + +fi_echo "OTA update success" + +# end main part +exit_ota_update 0 + diff --git a/meta-edison-distro/recipes-core/ota-update/files/ota-update.target b/meta-edison-distro/recipes-core/ota-update/files/ota-update.target new file mode 100644 index 0000000..6b23e39 --- /dev/null +++ b/meta-edison-distro/recipes-core/ota-update/files/ota-update.target @@ -0,0 +1,7 @@ +[Unit] +Description=OTA update target +Requires=sysinit.target +Conflicts=shutdown.target systemd-readahead-collect.service systemd-readahead-replay.service home.automount factory.automount +After=sysinit.target +Before=shutdown.target +AllowIsolate=yes diff --git a/meta-edison-distro/recipes-core/ota-update/ota-update.bb b/meta-edison-distro/recipes-core/ota-update/ota-update.bb new file mode 100644 index 0000000..f41eb0d --- /dev/null +++ b/meta-edison-distro/recipes-core/ota-update/ota-update.bb @@ -0,0 +1,40 @@ +DESCRIPTION = "OTA update systemd target" +LICENSE = "GPLv2+" +LIC_FILES_CHKSUM = "file://${COREBASE}/meta/files/common-licenses/GPL-2.0;md5=801f80980d171dd6425610833a22dbe6" + +SRC_URI = "file://ota-update.service \ + file://ota-update.target \ + file://ota-update.sh" + +SYSTEMD_SERVICE_${PN} = "ota-update.service" + +RDEPENDS_${PN} = "systemd" + +do_install() { + install -d ${D}/sbin + install -c -m 0744 ${WORKDIR}/ota-update.sh ${D}/sbin + install -d ${D}${systemd_unitdir}/system + install -d ${D}${sysconfdir}/systemd/system/ota-update.target.wants + install -c -m 0644 ${WORKDIR}/ota-update.target ${D}${systemd_unitdir}/system + install -c -m 0644 ${WORKDIR}/ota-update.service ${D}${systemd_unitdir}/system + sed -i -e 's,@BASE_BINDIR@,${base_bindir},g' \ + -e 's,@BASE_SBINDIR@,${base_sbindir},g' \ + -e 's,@SBINDIR@,${sbindir},g' \ + -e 's,@BINDIR@,${bindir},g' \ + ${D}${systemd_unitdir}/system/ota-update.service + + # enable services + ln -sf ${systemd_unitdir}/system/ota-update.service \ + ${D}${sysconfdir}/systemd/system/ota-update.target.wants/ota-update.service +} + +FILES_${PN} = "${base_libdir}/systemd/system/*.service \ + ${base_libdir}/systemd/system/ota-update.target \ + ${sysconfdir} \ + /sbin/ota-update.sh" + +# As this package is tied to systemd, only build it when we're also building systemd. +python () { + if not oe.utils.contains ('DISTRO_FEATURES', 'systemd', True, False, d): + raise bb.parse.SkipPackage("'systemd' not in DISTRO_FEATURES") +} diff --git a/meta-edison-distro/recipes-core/readline/files/readline-fix-segfault-when-pressing-DEL-key-twice.patch b/meta-edison-distro/recipes-core/readline/files/readline-fix-segfault-when-pressing-DEL-key-twice.patch new file mode 100644 index 0000000..4dcaf89 --- /dev/null +++ b/meta-edison-distro/recipes-core/readline/files/readline-fix-segfault-when-pressing-DEL-key-twice.patch @@ -0,0 +1,39 @@ +From 8acbcaa6b3d855f3e85e6a108db323278584091e Mon Sep 17 00:00:00 2001 +From: Loic Akue <loicx.akue@intel.com> +Date: Mon, 3 Nov 2014 16:26:42 +0100 +Subject: [PATCH] bug readline + +| READLINE PATCH REPORT +| ===================== +| +|Readline-Release: 6.3 +|Patch-ID: readline63-002 +| +|Bug-Reported-by: Anatol Pomozov <anatol.pomozov@gmail.com> +|Bug-Reference-ID: <CAOMFOmXy3mT2So5GQ5F-smCVArQuAeBwZ2QKzgCtMeXJoDeYOQ@mail.gmail.com> +|Bug-Reference-URL: http://lists.gnu.org/archive/html/bug-readline/2014-03/msg00010.html +| +|Bug-Description: +| +|When in callback mode, some readline commands can cause readline to seg +|fault by passing invalid contexts to callback functions. + +Signed-off-by: Loic Akue <loicx.akue@intel.com> + +diff --git a/readline.c b/readline.c +index 03eefa6..55c0522 100644 +--- a/readline.c ++++ b/readline.c +@@ -744,7 +744,8 @@ _rl_dispatch_callback (cxt) + r = _rl_subseq_result (r, cxt->oldmap, cxt->okey, (cxt->flags & KSEQ_SUBSEQ)); + + RL_CHECK_SIGNALS (); +- if (r == 0) /* success! */ ++ /* We only treat values < 0 specially to simulate recursion. */ ++ if (r >= 0 || (r == -1 && (cxt->flags & KSEQ_SUBSEQ) == 0)) /* success! or failure! */ + { + _rl_keyseq_chain_dispose (); + RL_UNSETSTATE (RL_STATE_MULTIKEY); +-- +1.7.9.5 + diff --git a/meta-edison-distro/recipes-core/readline/readline_6.3.bbappend b/meta-edison-distro/recipes-core/readline/readline_6.3.bbappend new file mode 100644 index 0000000..c8ecc36 --- /dev/null +++ b/meta-edison-distro/recipes-core/readline/readline_6.3.bbappend @@ -0,0 +1,4 @@ +FILESEXTRAPATHS_prepend := "${THISDIR}/files:" +SRC_URI += "\ + file://readline-fix-segfault-when-pressing-DEL-key-twice.patch \ + " diff --git a/meta-edison-distro/recipes-core/resize-rootfs/files/resize-rootfs.service b/meta-edison-distro/recipes-core/resize-rootfs/files/resize-rootfs.service new file mode 100644 index 0000000..708226f --- /dev/null +++ b/meta-edison-distro/recipes-core/resize-rootfs/files/resize-rootfs.service @@ -0,0 +1,14 @@ +[Unit] +Description=Increases rootfs image size to fit partition +Requires=dev-disk-by\x2dpartlabel-rootfs.device +After=dev-disk-by\x2dpartlabel-rootfs.device + +[Service] +Type=oneshot +ExecStart=/sbin/resize2fs /dev/disk/by-partlabel/rootfs +ExecStart=/bin/systemctl disable resize-rootfs.service + +StandardOutput=journal+console + +[Install] +WantedBy=default.target diff --git a/meta-edison-distro/recipes-core/resize-rootfs/resize-rootfs.bb b/meta-edison-distro/recipes-core/resize-rootfs/resize-rootfs.bb new file mode 100644 index 0000000..f91e4ba --- /dev/null +++ b/meta-edison-distro/recipes-core/resize-rootfs/resize-rootfs.bb @@ -0,0 +1,24 @@ +DESCRIPTION = "Resize Rootfs systemd service" +LICENSE = "GPLv2+" +LIC_FILES_CHKSUM = "file://${COREBASE}/meta/files/common-licenses/GPL-2.0;md5=801f80980d171dd6425610833a22dbe6" + +SRC_URI = "file://resize-rootfs.service" + +inherit systemd + +SYSTEMD_SERVICE_${PN} = "resize-rootfs.service" + +RDEPENDS_${PN} = "systemd e2fsprogs-resize2fs" + +do_install() { + install -d ${D}${systemd_unitdir}/system + install -c -m 0644 ${WORKDIR}/resize-rootfs.service ${D}${systemd_unitdir}/system +} + +FILES_${PN} = "${base_libdir}/systemd/system/resize-rootfs.service" + +# As this package is tied to systemd, only build it when we're also building systemd. +python () { + if not oe.utils.contains ('DISTRO_FEATURES', 'systemd', True, False, d): + raise bb.parse.SkipPackage("'systemd' not in DISTRO_FEATURES") +} diff --git a/meta-edison-distro/recipes-core/systemd/files/edison-machine-id.service b/meta-edison-distro/recipes-core/systemd/files/edison-machine-id.service new file mode 100644 index 0000000..3caa836 --- /dev/null +++ b/meta-edison-distro/recipes-core/systemd/files/edison-machine-id.service @@ -0,0 +1,14 @@ +[Unit] +Description= Generate unique machine-id +After=systemd-remount-fs.service + +[Service] +Type=oneshot +ExecStartPre=/bin/umount /etc/machine-id +ExecStart=/bin/systemd-machine-id-setup +ExecStartPost=/bin/systemctl disable edison-machine-id +StandardOutput=journal+console + +[Install] +WantedBy=basic.target + diff --git a/meta-edison-distro/recipes-core/systemd/files/hsu-pm-runtime.service b/meta-edison-distro/recipes-core/systemd/files/hsu-pm-runtime.service new file mode 100644 index 0000000..e81b6ff --- /dev/null +++ b/meta-edison-distro/recipes-core/systemd/files/hsu-pm-runtime.service @@ -0,0 +1,14 @@ +[Unit] +Description= HSU runtime pm service +Requires=getty.target +After=getty.target + +[Service] +Type=oneshot +ExecStart=/bin/sh -c 'echo auto > /sys/devices/pci0000:00/0000:00:04.3/power/control' +ExecStart=/bin/sh -c 'echo auto > /sys/devices/pci0000:00/0000:00:04.1/power/control' +StandardOutput=null + +[Install] +WantedBy=default.target + diff --git a/meta-edison-distro/recipes-core/systemd/files/journald.conf b/meta-edison-distro/recipes-core/systemd/files/journald.conf new file mode 100644 index 0000000..e096485 --- /dev/null +++ b/meta-edison-distro/recipes-core/systemd/files/journald.conf @@ -0,0 +1,36 @@ +# This file is part of systemd. +# +# systemd is free software; you can redistribute it and/or modify it +# under the terms of the GNU Lesser General Public License as published by +# the Free Software Foundation; either version 2.1 of the License, or +# (at your option) any later version. +# +# See journald.conf(5) for details + +[Journal] +Storage=persistent +#Compress=yes +#Seal=yes +#SplitMode=login +#SyncIntervalSec=5m +#RateLimitInterval=30s +#RateLimitBurst=1000 +#SystemMaxUse= +#SystemKeepFree= +#SystemMaxFileSize= +#RuntimeMaxUse= +#RuntimeKeepFree= +#RuntimeMaxFileSize= +#MaxRetentionSec= +#MaxFileSec=1month +#ForwardToSyslog=yes +#ForwardToKMsg=no +#ForwardToConsole=no +#ForwardToWall=yes +#TTYPath=/dev/console +#MaxLevelStore=debug +#MaxLevelSyslog=debug +#MaxLevelKMsg=notice +#MaxLevelConsole=info +#MaxLevelWall=emerg + diff --git a/meta-edison-distro/recipes-core/systemd/files/system.conf b/meta-edison-distro/recipes-core/systemd/files/system.conf new file mode 100644 index 0000000..e21ba85 --- /dev/null +++ b/meta-edison-distro/recipes-core/systemd/files/system.conf @@ -0,0 +1,45 @@ +# This file is part of systemd. +# +# systemd is free software; you can redistribute it and/or modify it +# under the terms of the GNU Lesser General Public License as published by +# the Free Software Foundation; either version 2.1 of the License, or +# (at your option) any later version. +# +# See systemd-system.conf(5) for details + +[Manager] +#LogLevel=info +#LogTarget=journal-or-kmsg +#LogColor=yes +#LogLocation=no +#DumpCore=yes +#CrashShell=no +#ShowStatus=yes +#CrashChVT=1 +#CPUAffinity=1 2 +#DefaultControllers=cpu +#DefaultStandardOutput=journal +#DefaultStandardError=inherit +#JoinControllers=cpu,cpuacct,cpuset net_cls,net_prio +# Watchdog timeout. Value must be between 35 and 170 seconds. +RuntimeWatchdogSec=90 +#ShutdownWatchdogSec=10min +#CapabilityBoundingSet= +#TimerSlackNSec= +#DefaultEnvironment= +#DefaultLimitCPU= +#DefaultLimitFSIZE= +#DefaultLimitDATA= +#DefaultLimitSTACK= +#DefaultLimitCORE= +#DefaultLimitRSS= +#DefaultLimitNOFILE= +#DefaultLimitAS= +#DefaultLimitNPROC= +#DefaultLimitMEMLOCK= +#DefaultLimitLOCKS= +#DefaultLimitSIGPENDING= +#DefaultLimitMSGQUEUE= +#DefaultLimitNICE= +#DefaultLimitRTPRIO= +#DefaultLimitRTTIME= diff --git a/meta-edison-distro/recipes-core/systemd/files/systemd-reboot-service.patch b/meta-edison-distro/recipes-core/systemd/files/systemd-reboot-service.patch new file mode 100644 index 0000000..aaf1121 --- /dev/null +++ b/meta-edison-distro/recipes-core/systemd/files/systemd-reboot-service.patch @@ -0,0 +1,9 @@ +diff --git a/units/systemd-reboot.service.in b/units/systemd-reboot.service.in +index d99bd3e..4517cfe 100644 +--- a/units/systemd-reboot.service.in ++++ b/units/systemd-reboot.service.in +@@ -15,3 +15,4 @@ After=shutdown.target umount.target final.target + [Service] + Type=oneshot + ExecStart=@SYSTEMCTL@ --force reboot ++ExecStartPre=/bin/sh -c " if test -e /run/systemd/reboot-param ; then read REBOOTPARAM < /run/systemd/reboot-param ; fw_setenv bootargs_mode $REBOOTPARAM ; fi " diff --git a/meta-edison-distro/recipes-core/systemd/files/timesyncd.conf b/meta-edison-distro/recipes-core/systemd/files/timesyncd.conf new file mode 100644 index 0000000..620ef45 --- /dev/null +++ b/meta-edison-distro/recipes-core/systemd/files/timesyncd.conf @@ -0,0 +1,12 @@ +# This file is part of systemd. +# +# systemd is free software; you can redistribute it and/or modify it +# under the terms of the GNU Lesser General Public License as published by +# the Free Software Foundation; either version 2.1 of the License, or +# (at your option) any later version. +# +# See timesyncd.conf(5) for details + +[Time] +Servers=time1.google.com time2.google.com time3.google.com time4.google.com + diff --git a/meta-edison-distro/recipes-core/systemd/files/usb0.network b/meta-edison-distro/recipes-core/systemd/files/usb0.network new file mode 100644 index 0000000..b7d1042 --- /dev/null +++ b/meta-edison-distro/recipes-core/systemd/files/usb0.network @@ -0,0 +1,6 @@ +[Match] +Name=usb0 + +[Network] +Address=192.168.2.15/24 + diff --git a/meta-edison-distro/recipes-core/systemd/systemd-compat-units.bb b/meta-edison-distro/recipes-core/systemd/systemd-compat-units.bb new file mode 100644 index 0000000..6419bc2 --- /dev/null +++ b/meta-edison-distro/recipes-core/systemd/systemd-compat-units.bb @@ -0,0 +1,41 @@ +SUMMARY = "Enhances systemd compatilibity with existing SysVinit scripts" + +LICENSE = "MIT" +LIC_FILES_CHKSUM = "file://${COREBASE}/LICENSE;md5=4d92cd373abda3937c2bc47fbc49d690" + +PR = "r29" + +DEPENDS = "systemd-systemctl-native" + +inherit allarch + +ALLOW_EMPTY_${PN} = "1" + +SYSTEMD_DISABLED_SYSV_SERVICES = " \ + busybox-udhcpc \ + hwclock \ + networking \ + nfsserver \ + nfscommon \ + syslog.busybox \ +" + +pkg_postinst_${PN} () { + cd $D${sysconfdir}/init.d + + echo "Disabling the following sysv scripts: " + + OPTS="" + + if [ -n "$D" ]; then + OPTS="--root=$D" + fi + + for i in ${SYSTEMD_DISABLED_SYSV_SERVICES} ; do + if [ \( -e $i -o $i.sh \) -a ! \( -e $D${sysconfdir}/systemd/system/$i.service -o -e $D${systemd_unitdir}/system/$i.service \) ] ; then + echo -n "$i: " ; systemctl ${OPTS} mask $i.service + fi + done ; echo +} + +RDPEPENDS_${PN} = "systemd" diff --git a/meta-edison-distro/recipes-core/systemd/systemd-serialgetty.bb b/meta-edison-distro/recipes-core/systemd/systemd-serialgetty.bb new file mode 100644 index 0000000..1c34d5c --- /dev/null +++ b/meta-edison-distro/recipes-core/systemd/systemd-serialgetty.bb @@ -0,0 +1,49 @@ +SUMMARY = "Serial terminal support for systemd" +LICENSE = "GPLv2+" +LIC_FILES_CHKSUM = "file://${COREBASE}/meta/files/common-licenses/GPL-2.0;md5=801f80980d171dd6425610833a22dbe6" + +PR = "r5" + +SERIAL_CONSOLE ?= "115200 ttyS0" + +SRC_URI = "file://serial-getty@.service" + +do_install() { + if [ ! -z "${SERIAL_CONSOLES}" ] ; then + default_baudrate=`echo "${SERIAL_CONSOLES}" | sed 's/\;.*//'` + install -d ${D}${systemd_unitdir}/system/ + install -d ${D}${sysconfdir}/systemd/system/getty.target.wants/ + install -m 0644 ${WORKDIR}/serial-getty@.service ${D}${systemd_unitdir}/system/ + sed -i -e s/\@BAUDRATE\@/$default_baudrate/g ${D}${systemd_unitdir}/system/serial-getty@.service + + tmp="${SERIAL_CONSOLES}" + for entry in $tmp ; do + baudrate=`echo $entry | sed 's/\;.*//'` + ttydev=`echo $entry | sed -e 's/^[0-9]*\;//' -e 's/\;.*//'` + if [ "$baudrate" = "$default_baudrate" ] ; then + # enable the service + ln -sf ${systemd_unitdir}/system/serial-getty@.service \ + ${D}${sysconfdir}/systemd/system/getty.target.wants/serial-getty@$ttydev.service + else + # install custom service file for the non-default baudrate + install -m 0644 ${WORKDIR}/serial-getty@.service ${D}${systemd_unitdir}/system/serial-getty$baudrate@.service + sed -i -e s/\@BAUDRATE\@/$baudrate/g ${D}${systemd_unitdir}/system/serial-getty$baudrate@.service + # enable the service + ln -sf ${systemd_unitdir}/system/serial-getty$baudrate@.service \ + ${D}${sysconfdir}/systemd/system/getty.target.wants/serial-getty$baudrate@$ttydev.service + fi + done + fi +} + +RDEPENDS_${PN} = "systemd" + +# This is a machine specific file +FILES_${PN} = "${systemd_unitdir}/system/*.service ${sysconfdir}" +PACKAGE_ARCH = "${MACHINE_ARCH}" + +# As this package is tied to systemd, only build it when we're also building systemd. +python () { + if not bb.utils.contains ('DISTRO_FEATURES', 'systemd', True, False, d): + raise bb.parse.SkipPackage("'systemd' not in DISTRO_FEATURES") +} diff --git a/meta-edison-distro/recipes-core/systemd/systemd-serialgetty/serial-getty@.service b/meta-edison-distro/recipes-core/systemd/systemd-serialgetty/serial-getty@.service new file mode 100644 index 0000000..6dd335c --- /dev/null +++ b/meta-edison-distro/recipes-core/systemd/systemd-serialgetty/serial-getty@.service @@ -0,0 +1,37 @@ +# This file is part of systemd. +# +# systemd is free software; you can redistribute it and/or modify it +# under the terms of the GNU Lesser General Public License as published by +# the Free Software Foundation; either version 2.1 of the License, or +# (at your option) any later version. + +[Unit] +Description=Serial Getty on %I +Documentation=man:agetty(8) man:systemd-getty-generator(8) +Documentation=http://0pointer.de/blog/projects/serial-console.html +BindsTo=dev-%i.device +After=dev-%i.device systemd-user-sessions.service plymouth-quit-wait.service +After=rc-local.service + +# If additional gettys are spawned during boot then we should make +# sure that this is synchronized before getty.target, even though +# getty.target didn't actually pull it in. +Before=getty.target +IgnoreOnIsolate=yes + +[Service] +Environment="TERM=xterm" +ExecStart=-/sbin/agetty -8 --keep-baud %I @BAUDRATE@ $TERM +Type=idle +Restart=always +RestartSec=0 +UtmpIdentifier=%I +TTYPath=/dev/%I +TTYReset=yes +TTYVHangup=yes +KillMode=process +IgnoreSIGPIPE=no +SendSIGHUP=yes + +[Install] +WantedBy=getty.target diff --git a/meta-edison-distro/recipes-core/systemd/systemd-systemctl-native.bb b/meta-edison-distro/recipes-core/systemd/systemd-systemctl-native.bb new file mode 100644 index 0000000..72bc77d --- /dev/null +++ b/meta-edison-distro/recipes-core/systemd/systemd-systemctl-native.bb @@ -0,0 +1,15 @@ +SUMMARY = "Wrapper for enabling systemd services" + +LICENSE = "MIT" +LIC_FILES_CHKSUM = "file://${COREBASE}/LICENSE;md5=4d92cd373abda3937c2bc47fbc49d690" + +PR = "r6" + +inherit native + +SRC_URI = "file://systemctl" + +do_install() { + install -d ${D}${bindir} + install -m 0755 ${WORKDIR}/systemctl ${D}${bindir} +} diff --git a/meta-edison-distro/recipes-core/systemd/systemd-systemctl/systemctl b/meta-edison-distro/recipes-core/systemd/systemd-systemctl/systemctl new file mode 100755 index 0000000..b37f27a --- /dev/null +++ b/meta-edison-distro/recipes-core/systemd/systemd-systemctl/systemctl @@ -0,0 +1,153 @@ +#!/bin/sh +echo "Started $0 $*" + +ROOT= + +# parse command line params +action= +while [ $# != 0 ]; do + opt="$1" + + case "$opt" in + enable) + shift + + action="$opt" + services="$1" + cmd_args="1" + shift + ;; + disable) + shift + + action="$opt" + services="$1" + cmd_args="1" + shift + ;; + mask) + shift + + action="$opt" + services="$1" + cmd_args="1" + shift + ;; + preset) + shift + + action="$opt" + services="$1" + cmd_args="1" + shift + ;; + --root=*) + ROOT=${opt##--root=} + cmd_args="0" + shift + ;; + *) + if [ "$cmd_args" = "1" ]; then + services="$services $opt" + shift + else + echo "'$opt' is an unkown option; exiting with error" + exit 1 + fi + ;; + esac +done +if [ "$action" = "preset" -a "$service_file" = "" ]; then + services=$(for f in `find $ROOT/etc/systemd/system $ROOT/lib/systemd/system $ROOT/usr/lib/systemd/system -type f 2>1`; do basename $f; done) + services="$services $opt" + presetall=1 +fi + +for service in $services; do + if [ "$presetall" = "1" ]; then + action="preset" + fi + if [ "$action" = "mask" ]; then + if [ ! -d $ROOT/etc/systemd/system/ ]; then + mkdir -p $ROOT/etc/systemd/system/ + fi + cmd="ln -s /dev/null $ROOT/etc/systemd/system/$service" + echo "$cmd" + $cmd + exit 0 + fi + + echo "Try to find location of $service..." + # find service file + for p in $ROOT/etc/systemd/system \ + $ROOT/lib/systemd/system \ + $ROOT/usr/lib/systemd/system; do + if [ -e $p/$service ]; then + service_file=$p/$service + service_file=${service_file##$ROOT} + fi + done + if [ -z "$service_file" ]; then + echo "'$service' couldn't be found; exiting with error" + exit 1 + fi + echo "Found $service in $service_file" + + # If any new unit types are added to systemd they should be added + # to this regular expression. + unit_types_re='\.\(service\|socket\|device\|mount\|automount\|swap\|target\|path\|timer\|snapshot\)$' + if [ "$action" = "preset" ]; then + action=`egrep -sh $service $ROOT/etc/systemd/user-preset/*.preset | cut -f1 -d' '` + if [ -z "$action" ]; then + globalpreset=`egrep -sh '\*' $ROOT/etc/systemd/user-preset/*.preset | cut -f1 -d' '` + if [ -n "$globalpreset" ]; then + action="$globalpreset" + else + action="enable" + fi + fi + fi + # create the required symbolic links + wanted_by=$(sed '/^WantedBy[[:space:]]*=/s,[^=]*=,,p;d' "$ROOT/$service_file" \ + | tr ',' '\n' \ + | grep "$unit_types_re") + + for r in $wanted_by; do + echo "WantedBy=$r found in $service" + if [ "$action" = "enable" ]; then + mkdir -p $ROOT/etc/systemd/system/$r.wants + ln -s $service_file $ROOT/etc/systemd/system/$r.wants + echo "Enabled $service for $wanted_by." + else + rm -f $ROOT/etc/systemd/system/$r.wants/$service + rmdir --ignore-fail-on-non-empty -p $ROOT/etc/systemd/system/$r.wants + echo "Disabled $service for $wanted_by." + fi + done + + # create the required symbolic 'Alias' links + alias=$(sed '/^Alias[[:space:]]*=/s,[^=]*=,,p;d' "$ROOT/$service_file" \ + | tr ',' '\n' \ + | grep "$unit_types_re") + + for r in $alias; do + if [ "$action" = "enable" ]; then + mkdir -p $ROOT/etc/systemd/system + ln -s $service_file $ROOT/etc/systemd/system/$r + echo "Enabled $service for $alias." + else + rm -f $ROOT/etc/systemd/system/$r + echo "Disabled $service for $alias." + fi + done + + # call us for the other required scripts + also=$(sed '/^Also[[:space:]]*=/s,[^=]*=,,p;d' "$ROOT/$service_file" \ + | tr ',' '\n') + for a in $also; do + echo "Also=$a found in $service" + if [ "$action" = "enable" ]; then + $0 --root=$ROOT enable $a + fi + done +done diff --git a/meta-edison-distro/recipes-core/systemd/systemd/00-create-volatile.conf b/meta-edison-distro/recipes-core/systemd/systemd/00-create-volatile.conf new file mode 100644 index 0000000..01ec03e --- /dev/null +++ b/meta-edison-distro/recipes-core/systemd/systemd/00-create-volatile.conf @@ -0,0 +1,6 @@ +#This goes hand-in-hand with the base-files of OE-Core. The file must +# be sorted before 'systemd.conf' becuase this attempts to create a file +# inside /var/log. + + +d /var/volatile/tmp - - - - diff --git a/meta-edison-distro/recipes-core/systemd/systemd/0001-uClibc-doesn-t-implement-pwritev-preadv.patch b/meta-edison-distro/recipes-core/systemd/systemd/0001-uClibc-doesn-t-implement-pwritev-preadv.patch new file mode 100644 index 0000000..9fdb3c9 --- /dev/null +++ b/meta-edison-distro/recipes-core/systemd/systemd/0001-uClibc-doesn-t-implement-pwritev-preadv.patch @@ -0,0 +1,34 @@ +Upstream-Status: Inappropriate [uclibc specific] + +From 7be9273548bcb1f57d011fc252965e45dd2a058c Mon Sep 17 00:00:00 2001 +From: Khem Raj <raj.khem@gmail.com> +Date: Wed, 21 Aug 2013 19:09:27 -0700 +Subject: [PATCH] uClibc doesn't implement pwritev/preadv + +Lets stub out the testcase for building. + +Signed-off-by: Khem Raj <raj.khem@gmail.com> +--- + src/libsystemd-bus/test-bus-memfd.c | 2 ++ + 1 file changed, 2 insertions(+) + +Index: systemd-209/src/libsystemd/sd-bus/test-bus-memfd.c +=================================================================== +--- systemd-209.orig/src/libsystemd/sd-bus/test-bus-memfd.c 2014-02-19 15:03:09.983254602 -0800 ++++ systemd-209/src/libsystemd/sd-bus/test-bus-memfd.c 2014-02-19 23:42:10.636652864 -0800 +@@ -151,6 +151,7 @@ + /* check content */ + assert_se(memcmp(buf, "ll", 2) == 0); + ++#ifndef __UCLIBC__ + /* writev it out*/ + iov[0].iov_base = (char *)"ABC"; + iov[0].iov_len = 3; +@@ -173,6 +174,7 @@ + assert_se(memcmp(bufv[0], "ABC", 3) == 0); + assert_se(memcmp(bufv[1], "DEF", 3) == 0); + assert_se(memcmp(bufv[2], "GHI", 3) == 0); ++#endif /* __UCLIBC__ */ + + sd_memfd_free(m); + diff --git a/meta-edison-distro/recipes-core/systemd/systemd/binfmt-install.patch b/meta-edison-distro/recipes-core/systemd/systemd/binfmt-install.patch new file mode 100644 index 0000000..c2d5099 --- /dev/null +++ b/meta-edison-distro/recipes-core/systemd/systemd/binfmt-install.patch @@ -0,0 +1,56 @@ +Don't install dependency links at install time for the binfmt services, use +[Install] blocks so that they get created when the service is enabled like a +traditional service. + +The [Install] blocks were rejected upstream as they don't have a way to "enable" +it on install without static symlinks which can't be disabled, only masked. We +however can do that in a postinst. + +Upstream-Status: Denied +Signed-off-by: Ross Burton <ross.burton@intel.com> + +diff --git a/Makefile.am b/Makefile.am +index 7933de6..78acb6f 100644 +--- a/Makefile.am ++++ b/Makefile.am +@@ -3133,10 +3133,6 @@ INSTALL_DIRS += \ + $(prefix)/lib/binfmt.d \ + $(sysconfdir)/binfmt.d + +-SYSINIT_TARGET_WANTS += \ +- systemd-binfmt.service \ +- proc-sys-fs-binfmt_misc.automount +- + endif + + EXTRA_DIST += \ +diff --git a/units/proc-sys-fs-binfmt_misc.automount b/units/proc-sys-fs-binfmt_misc.automount +index 6be3893..709adef 100644 +--- a/units/proc-sys-fs-binfmt_misc.automount ++++ b/units/proc-sys-fs-binfmt_misc.automount +@@ -16,3 +16,6 @@ ConditionPathIsReadWrite=/proc/sys/ + + [Automount] + Where=/proc/sys/fs/binfmt_misc ++ ++[Install] ++WantedBy=sysinit.target +diff --git a/units/systemd-binfmt.service.in b/units/systemd-binfmt.service.in +index 02dfe77..86d3481 100644 +--- a/units/systemd-binfmt.service.in ++++ b/units/systemd-binfmt.service.in +@@ -11,6 +11,7 @@ Documentation=man:systemd-binfmt.service(8) man:binfmt.d(5) + Documentation=https://www.kernel.org/doc/Documentation/binfmt_misc.txt + DefaultDependencies=no + Conflicts=shutdown.target ++Wants=proc-sys-fs-binfmt_misc.automount + After=systemd-readahead-collect.service systemd-readahead-replay.service proc-sys-fs-binfmt_misc.automount + Before=sysinit.target shutdown.target + ConditionPathIsReadWrite=/proc/sys/ +@@ -24,3 +25,6 @@ ConditionDirectoryNotEmpty=|/run/binfmt.d + Type=oneshot + RemainAfterExit=yes + ExecStart=@rootlibexecdir@/systemd-binfmt ++ ++[Install] ++WantedBy=sysinit.target diff --git a/meta-edison-distro/recipes-core/systemd/systemd/init b/meta-edison-distro/recipes-core/systemd/systemd/init new file mode 100644 index 0000000..ea52be4 --- /dev/null +++ b/meta-edison-distro/recipes-core/systemd/systemd/init @@ -0,0 +1,104 @@ +#!/bin/sh + +### BEGIN INIT INFO +# Provides: udev +# Required-Start: mountvirtfs +# Required-Stop: +# Default-Start: S +# Default-Stop: +# Short-Description: Start udevd, populate /dev and load drivers. +### END INIT INFO + +. /etc/init.d/functions + +export TZ=/etc/localtime + +[ -d /sys/class ] || exit 1 +[ -r /proc/mounts ] || exit 1 +[ -x @UDEVD@ ] || exit 1 +[ -f /etc/default/udev-cache ] && . /etc/default/udev-cache +[ -f /etc/udev/udev.conf ] && . /etc/udev/udev.conf + +readfile () { + filename=$1 + READDATA="" + if [ -r $filename ]; then + while read line; do + READDATA="$READDATA$line" + done < $filename + fi +} + +case "$1" in + start) + export ACTION=add + # propagate /dev from /sys + echo "Starting udev" + + # mount the devtmpfs on /dev, if not already done + LANG=C awk '$2 == "/dev" && ($3 == "devtmpfs") { exit 1 }' /proc/mounts && { + mount -n -o mode=0755 -t devtmpfs none "/dev" + } + [ -e /dev/pts ] || mkdir -m 0755 /dev/pts + [ -e /dev/shm ] || mkdir -m 1777 /dev/shm + mount -a -t tmpfs 2>/dev/null + + # cache handling + if [ "$DEVCACHE" != "" ]; then + readfile /proc/version + VERSION="$READDATA" + readfile /proc/cmdline + CMDLINE="$READDATA" + readfile /proc/devices + DEVICES="$READDATA" + readfile /proc/atags + ATAGS="$READDATA" + + if [ -e $DEVCACHE ]; then + readfile /etc/udev/cache.data + if [ "$READDATA" = "$VERSION$CMDLINE$DEVICES$ATAGS" ]; then + (cd /; tar xf $DEVCACHE > /dev/null 2>&1) + not_first_boot=1 + [ "$VERBOSE" != "no" ] && echo "udev: using cache file $DEVCACHE" + [ -e /dev/shm/udev.cache ] && rm -f /dev/shm/udev.cache + else + echo "$VERSION$CMDLINE$DEVICES$ATAGS" > /dev/shm/udev.cache + fi + else + echo "$VERSION$CMDLINE$DEVICES$ATAGS" > /dev/shm/udev.cache + fi + fi + + # make_extra_nodes + killproc systemd-udevd > "/dev/null" 2>&1 + + # trigger the sorted events + echo -e '\000\000\000\000' > /proc/sys/kernel/hotplug + @UDEVD@ -d + + udevadm control --env=STARTUP=1 + if [ "$not_first_boot" != "" ];then + udevadm trigger --action=add --subsystem-nomatch=tty --subsystem-nomatch=mem --subsystem-nomatch=vc --subsystem-nomatch=vtconsole --subsystem-nomatch=misc --subsystem-nomatch=dcon --subsystem-nomatch=pci_bus --subsystem-nomatch=graphics --subsystem-nomatch=backlight --subsystem-nomatch=video4linux --subsystem-nomatch=platform + (udevadm settle --timeout=3; udevadm control --env=STARTUP=)& + else + udevadm trigger --action=add + udevadm settle + fi + ;; + stop) + echo "Stopping udevd" + start-stop-daemon --stop --name systemd-udevd --quiet + ;; + restart) + $0 stop + sleep 1 + $0 start + ;; + status) + status systemd-udevd + ;; + *) + echo "Usage: $0 {start|stop|status|restart}" + exit 1 +esac +exit 0 diff --git a/meta-edison-distro/recipes-core/systemd/systemd/optional_secure_getenv.patch b/meta-edison-distro/recipes-core/systemd/systemd/optional_secure_getenv.patch new file mode 100644 index 0000000..2063268 --- /dev/null +++ b/meta-edison-distro/recipes-core/systemd/systemd/optional_secure_getenv.patch @@ -0,0 +1,19 @@ +on uclibc secure_getenv is not available +therefore default to using getenv instead + +Upstream-Status: Denied [no desire for uclibc support] +Signed-off-by: Khem Raj <raj.khem@gmail.com> + +Index: git/src/shared/missing.h +=================================================================== +--- git.orig/src/shared/missing.h 2012-09-22 18:46:44.141282145 -0700 ++++ git/src/shared/missing.h 2012-09-22 18:48:44.081276570 -0700 +@@ -233,6 +233,8 @@ + #ifndef HAVE_SECURE_GETENV + # ifdef HAVE___SECURE_GETENV + # define secure_getenv __secure_getenv ++# elif defined __UCLIBC__ ++# define secure_getenv getenv + # else + # error neither secure_getenv nor __secure_getenv are available + # endif diff --git a/meta-edison-distro/recipes-core/systemd/systemd/run-ptest b/meta-edison-distro/recipes-core/systemd/systemd/run-ptest new file mode 100644 index 0000000..2f6bd93 --- /dev/null +++ b/meta-edison-distro/recipes-core/systemd/systemd/run-ptest @@ -0,0 +1,3 @@ +tar -C test -xJf test/sys.tar.xz +make test/rules-test.sh.log +make test/udev-test.pl.log diff --git a/meta-edison-distro/recipes-core/systemd/systemd/systemd-older-kernel.patch b/meta-edison-distro/recipes-core/systemd/systemd/systemd-older-kernel.patch new file mode 100644 index 0000000..18b50e7 --- /dev/null +++ b/meta-edison-distro/recipes-core/systemd/systemd/systemd-older-kernel.patch @@ -0,0 +1,56 @@ +From 6109f02dcc4f2d7a461c5772bab494f5753a2203 Mon Sep 17 00:00:00 2001 +From: Robert Yang <liezhi.yang@windriver.com> +Date: Thu, 29 May 2014 08:09:07 +0000 +Subject: [PATCH] rtnl-types.c: check IFLA_VLAN_PROTOCOL + +The older kernel's linux/if_link.h doesn't have IFLA_VLAN_PROTOCOL, we need +check whether it has been defined or not. + +The maintainer said that he would fix it: + +http://thread.gmane.org/gmane.comp.sysutils.systemd.devel/18200 + +Also we need redefine IFLA_MAX from 34 to 35 when define IFLA_CARRIER, +otherwise there would be error: + +| src/libsystemd/sd-rtnl/rtnl-types.c:233:9: error: array index in initializer exceeds array bounds +| [IFLA_CARRIER] = { .type = NLA_U8 }, + +Upstream-Status: Pending + +Signed-off-by: Robert Yang <liezhi.yang@windriver.com> +--- + src/libsystemd/sd-rtnl/rtnl-types.c | 2 ++ + src/shared/missing.h | 2 ++ + 2 files changed, 4 insertions(+) + +diff --git a/src/libsystemd/sd-rtnl/rtnl-types.c b/src/libsystemd/sd-rtnl/rtnl-types.c +index 44ac5ec..ab6161f 100644 +--- a/src/libsystemd/sd-rtnl/rtnl-types.c ++++ b/src/libsystemd/sd-rtnl/rtnl-types.c +@@ -67,7 +67,9 @@ static const NLType rtnl_link_info_data_vlan_types[IFLA_VLAN_MAX + 1] = { + [IFLA_VLAN_EGRESS_QOS] = { .type = NLA_NESTED }, + [IFLA_VLAN_INGRESS_QOS] = { .type = NLA_NESTED }, + */ ++#ifdef IFLA_VLAN_PROTOCOL + [IFLA_VLAN_PROTOCOL] = { .type = NLA_U16 }, ++#endif + }; + + static const NLType rtnl_link_info_data_bond_types[IFLA_BOND_MAX + 1] = { +diff --git a/src/shared/missing.h b/src/shared/missing.h +index d5ec2f8..732853f 100644 +--- a/src/shared/missing.h ++++ b/src/shared/missing.h +@@ -94,6 +94,8 @@ + + #ifndef IFLA_CARRIER + #define IFLA_CARRIER 33 ++ #undef IFLA_MAX ++ #define IFLA_MAX 35 + #ifndef IFLA_NUM_RX_QUEUES + #define IFLA_NUM_RX_QUEUES 32 + #ifndef IFLA_NUM_TX_QUEUES +-- +1.8.3.4 + diff --git a/meta-edison-distro/recipes-core/systemd/systemd/systemd-pam-configure-check-uclibc.patch b/meta-edison-distro/recipes-core/systemd/systemd/systemd-pam-configure-check-uclibc.patch new file mode 100644 index 0000000..4639532 --- /dev/null +++ b/meta-edison-distro/recipes-core/systemd/systemd/systemd-pam-configure-check-uclibc.patch @@ -0,0 +1,32 @@ +Upstream-Status: Denied [no desire for uclibc support] +Signed-off-by: Khem Raj <raj.khem@gmail.com> + +Index: git/configure.ac +=================================================================== +--- git.orig/configure.ac 2014-03-15 17:53:51.756340454 -0700 ++++ git/configure.ac 2014-03-15 18:07:34.888355897 -0700 +@@ -78,6 +78,24 @@ + + M4_DEFINES= + ++# check for few functions not implemented in uClibc ++ ++AC_CHECK_FUNCS_ONCE(mkostemp execvpe posix_fallocate) ++ ++# check for %ms format support - assume always no if cross compiling ++ ++AC_MSG_CHECKING([whether %ms format is supported by *scanf]) ++ ++AC_LINK_IFELSE( ++ [AC_LANG_PROGRAM([ ++ #include <stdio.h> ++ ],[ ++ char *buf1, *buf2, *buf3, str="1 2.3 abcde" ; ++ int rc = sscanf(str, "%ms %ms %ms", &buf1, &buf2, &buf3) ; ++ return (rc==3)?0:1;])], ++ [AC_DEFINE([HAVE_MSFORMAT], [1], [Define if %ms format is supported by *scanf.])], ++ [AC_MSG_RESULT([no])]) ++ + # gtkdocize greps for '^GTK_DOC_CHECK', so it needs to be on its own line + m4_ifdef([GTK_DOC_CHECK], [ + GTK_DOC_CHECK([1.18],[--flavour no-tmpl])], diff --git a/meta-edison-distro/recipes-core/systemd/systemd/systemd-pam-fix-execvpe.patch b/meta-edison-distro/recipes-core/systemd/systemd/systemd-pam-fix-execvpe.patch new file mode 100644 index 0000000..7170a38 --- /dev/null +++ b/meta-edison-distro/recipes-core/systemd/systemd/systemd-pam-fix-execvpe.patch @@ -0,0 +1,29 @@ +Upstream-Status: Denied [no desire for uclibc support] +Signed-off-by: Khem Raj <raj.khem@gmail.com> + +Index: systemd-209/src/nspawn/nspawn.c +=================================================================== +--- systemd-209.orig/src/nspawn/nspawn.c 2014-02-19 15:03:09.000000000 -0800 ++++ systemd-209/src/nspawn/nspawn.c 2014-02-19 23:20:38.720628627 -0800 +@@ -91,6 +91,8 @@ + LINK_GUEST + } LinkJournal; + ++#include "config.h" ++ + static char *arg_directory = NULL; + static char *arg_user = NULL; + static sd_id128_t arg_uuid = {}; +@@ -2045,7 +2047,12 @@ + a[0] = (char*) "/sbin/init"; + execve(a[0], a, env_use); + } else if (argc > optind) ++#ifdef HAVE_EXECVPE + execvpe(argv[optind], argv + optind, env_use); ++#else ++ environ = env_use; ++ execvp(argv[optind], argv + optind); ++#endif /* HAVE_EXECVPE */ + else { + chdir(home ? home : "/root"); + execle("/bin/bash", "-bash", NULL, env_use); diff --git a/meta-edison-distro/recipes-core/systemd/systemd/systemd-pam-fix-fallocate.patch b/meta-edison-distro/recipes-core/systemd/systemd/systemd-pam-fix-fallocate.patch new file mode 100644 index 0000000..f8e19ce --- /dev/null +++ b/meta-edison-distro/recipes-core/systemd/systemd/systemd-pam-fix-fallocate.patch @@ -0,0 +1,92 @@ +Upstream-Status: Denied [no desire for uclibc support] + +This patch is uclibc specific, thus not suitable for upstream. + +Signed-off-by: Khem Raj <raj.khem@gmail.com> +Signed-off-by: Chen Qi <Qi.Chen@windriver.com> +--- + src/journal/journal-file.c | 16 +++++++++++++++- + src/journal/journald-kmsg.c | 16 ++++++++++++++-- + 2 files changed, 29 insertions(+), 3 deletions(-) + +diff --git a/src/journal/journal-file.c b/src/journal/journal-file.c +index f2f1f35..092f87b 100644 +--- a/src/journal/journal-file.c ++++ b/src/journal/journal-file.c +@@ -38,6 +38,8 @@ + #include "compress.h" + #include "fsprg.h" + ++#include "config.h" ++ + #define DEFAULT_DATA_HASH_TABLE_SIZE (2047ULL*sizeof(HashItem)) + #define DEFAULT_FIELD_HASH_TABLE_SIZE (333ULL*sizeof(HashItem)) + +@@ -314,7 +316,7 @@ static int journal_file_verify_header(JournalFile *f) { + + static int journal_file_allocate(JournalFile *f, uint64_t offset, uint64_t size) { + uint64_t old_size, new_size; +- int r; ++ int r = 0; + + assert(f); + +@@ -362,9 +364,21 @@ static int journal_file_allocate(JournalFile *f, uint64_t offset, uint64_t size) + /* Note that the glibc fallocate() fallback is very + inefficient, hence we try to minimize the allocation area + as we can. */ ++#ifdef HAVE_POSIX_FALLOCATE + r = posix_fallocate(f->fd, old_size, new_size - old_size); + if (r != 0) + return -r; ++#else ++ /* Write something every 512 bytes to make sure the block is allocated */ ++ uint64_t len = new_size - old_size; ++ uint64_t offset = old_size; ++ for (offset += (len-1) % 512; len > 0; offset += 512) { ++ len -= 512; ++ if (pwrite(f->fd, "", 1, offset) != 1) ++ return -errno; ++ } ++ ++#endif /* HAVE_POSIX_FALLOCATE */ + + if (fstat(f->fd, &f->last_stat) < 0) + return -errno; +diff --git a/src/journal/journald-kmsg.c b/src/journal/journald-kmsg.c +index 12992e7..dc4fa93 100644 +--- a/src/journal/journald-kmsg.c ++++ b/src/journal/journald-kmsg.c +@@ -437,6 +437,7 @@ fail: + int server_open_kernel_seqnum(Server *s) { + _cleanup_close_ int fd; + uint64_t *p; ++ int r = 0; + + assert(s); + +@@ -449,8 +450,19 @@ int server_open_kernel_seqnum(Server *s) { + log_error("Failed to open /run/systemd/journal/kernel-seqnum, ignoring: %m"); + return 0; + } +- +- if (posix_fallocate(fd, 0, sizeof(uint64_t)) < 0) { ++#ifdef HAVE_POSIX_FALLOCATE ++ r = posix_fallocate(fd, 0, sizeof(uint64_t)); ++#else ++ /* Use good old method to write zeros into the journal file ++ perhaps very inefficient yet working. */ ++ char *buf = alloca(sizeof(uint64_t)); ++ off_t oldpos = lseek(fd, 0, SEEK_CUR); ++ bzero(buf, sizeof(uint64_t)); ++ lseek(fd, 0, SEEK_SET); ++ r = write(fd, buf, sizeof(uint64_t)); ++ lseek(fd, oldpos, SEEK_SET); ++#endif /* HAVE_POSIX_FALLOCATE */ ++ if (r < 0) { + log_error("Failed to allocate sequential number file, ignoring: %m"); + return 0; + } +-- +1.7.9.5 + diff --git a/meta-edison-distro/recipes-core/systemd/systemd/systemd-pam-fix-getty-unit.patch b/meta-edison-distro/recipes-core/systemd/systemd/systemd-pam-fix-getty-unit.patch new file mode 100644 index 0000000..9b4c940 --- /dev/null +++ b/meta-edison-distro/recipes-core/systemd/systemd/systemd-pam-fix-getty-unit.patch @@ -0,0 +1,35 @@ +Prefer getty to agetty in console setup systemd units + +Upstream-Status: Inappropriate [configuration specific] +Signed-off-by: Maxime Ripard <maxime.ripard@free-electrons.com> +--- + units/getty@.service.m4 | 2 +- + units/serial-getty@.service.m4 | 2 +- + 2 files changed, 2 insertions(+), 2 deletions(-) + +Index: git/units/getty@.service.m4 +=================================================================== +--- git.orig/units/getty@.service.m4 2014-03-15 08:16:17.000000000 -0700 ++++ git/units/getty@.service.m4 2014-03-15 08:21:11.007695825 -0700 +@@ -27,7 +27,7 @@ + + [Service] + # the VT is cleared by TTYVTDisallocate +-ExecStart=-/sbin/agetty --noclear %I $TERM ++ExecStart=-/sbin/getty -L %I $TERM + Type=idle + Restart=always + RestartSec=0 +Index: git/units/serial-getty@.service.m4 +=================================================================== +--- git.orig/units/serial-getty@.service.m4 2014-03-15 08:16:17.000000000 -0700 ++++ git/units/serial-getty@.service.m4 2014-03-15 08:22:31.291697331 -0700 +@@ -22,7 +22,7 @@ + IgnoreOnIsolate=yes + + [Service] +-ExecStart=-/sbin/agetty --keep-baud 115200,38400,9600 %I $TERM ++ExecStart=-/sbin/getty -L 115200 %I $TERM + Type=idle + Restart=always + RestartSec=0 diff --git a/meta-edison-distro/recipes-core/systemd/systemd/systemd-pam-fix-mkostemp.patch b/meta-edison-distro/recipes-core/systemd/systemd/systemd-pam-fix-mkostemp.patch new file mode 100644 index 0000000..8c7aa07 --- /dev/null +++ b/meta-edison-distro/recipes-core/systemd/systemd/systemd-pam-fix-mkostemp.patch @@ -0,0 +1,30 @@ +Upstream-Status: Denied [no desire for uclibc support] +Signed-off-by: Khem Raj <raj.khem@gmail.com> + +Index: git/src/shared/util.c +=================================================================== +--- git.orig/src/shared/util.c 2014-03-15 15:14:21.368160908 -0700 ++++ git/src/shared/util.c 2014-03-15 15:44:21.988194688 -0700 +@@ -85,6 +85,8 @@ + #include "def.h" + #include "missing.h" + ++#include "config.h" ++ + int saved_argc = 0; + char **saved_argv = NULL; + +@@ -6222,7 +6224,13 @@ + + u = umask(077); + ++#ifdef HAVE_MKOSTEMP + fd = mkostemp(pattern, flags); ++#else ++ fd = mkstemp(pattern); ++ if (fd >= 0) fcntl(fd, F_SETFD, flags); ++#endif /* HAVE_MKOSTEMP */ ++ + if (fd < 0) + return -errno; + diff --git a/meta-edison-distro/recipes-core/systemd/systemd/touchscreen.rules b/meta-edison-distro/recipes-core/systemd/systemd/touchscreen.rules new file mode 100644 index 0000000..d83fd16 --- /dev/null +++ b/meta-edison-distro/recipes-core/systemd/systemd/touchscreen.rules @@ -0,0 +1,18 @@ +# There are a number of modifiers that are allowed to be used in some +# of the different fields. They provide the following subsitutions: +# +# %n the "kernel number" of the device. +# For example, 'sda3' has a "kernel number" of '3' +# %e the smallest number for that name which does not matches an existing node +# %k the kernel name for the device +# %M the kernel major number for the device +# %m the kernel minor number for the device +# %b the bus id for the device +# %c the string returned by the PROGRAM +# %s{filename} the content of a sysfs attribute +# %% the '%' char itself +# + +# Create a symlink to any touchscreen input device +SUBSYSTEM=="input", KERNEL=="event[0-9]*", ATTRS{modalias}=="input:*-e0*,3,*a0,1,*18,*", SYMLINK+="input/touchscreen0" +SUBSYSTEM=="input", KERNEL=="event[0-9]*", ATTRS{modalias}=="ads7846", SYMLINK+="input/touchscreen0" diff --git a/meta-edison-distro/recipes-core/systemd/systemd/uclibc-get-physmem.patch b/meta-edison-distro/recipes-core/systemd/systemd/uclibc-get-physmem.patch new file mode 100644 index 0000000..39dfc9e --- /dev/null +++ b/meta-edison-distro/recipes-core/systemd/systemd/uclibc-get-physmem.patch @@ -0,0 +1,37 @@ +bypass unimplemented _SC_PHYS_PAGES system configuration API in uclibc + +Upstream-Status: Inappropriate [uclibc-specific] + +Signed-off-by: Khem Raj <raj.khem@gmail.com> + +Index: git/src/shared/util.c +=================================================================== +--- git.orig/src/shared/util.c 2014-03-15 18:09:34.796358146 -0700 ++++ git/src/shared/util.c 2014-03-15 20:16:33.836501084 -0700 +@@ -6332,11 +6332,24 @@ + + /* We return this as uint64_t in case we are running as 32bit + * process on a 64bit kernel with huge amounts of memory */ +- ++#ifdef __UCLIBC__ ++ char line[128]; ++ FILE *f = fopen("/proc/meminfo", "r"); ++ if (f == NULL) ++ return 0; ++ while (!feof(f) && fgets(line, sizeof(line)-1, f)) { ++ if (sscanf(line, "MemTotal: %l kB", &mem) == 1) { ++ mem *= 1024; ++ break; ++ } ++ } ++ fclose(f); ++ return (uint64_t) mem; ++#else + mem = sysconf(_SC_PHYS_PAGES); + assert(mem > 0); +- + return (uint64_t) mem * (uint64_t) page_size(); ++#endif + } + + char* mount_test_option(const char *haystack, const char *needle) { diff --git a/meta-edison-distro/recipes-core/systemd/systemd/uclibc-sysinfo_h.patch b/meta-edison-distro/recipes-core/systemd/systemd/uclibc-sysinfo_h.patch new file mode 100644 index 0000000..15645de --- /dev/null +++ b/meta-edison-distro/recipes-core/systemd/systemd/uclibc-sysinfo_h.patch @@ -0,0 +1,19 @@ +Dont include sys/sysinfo.h on uclibc it conflicts with linux/sysinfo.h + +Signed-off-by: Khem Raj <raj.khem@gmail.com> +Upstream-Status: Inappropriate [uclibc specific] + +Index: systemd-209/src/readahead/readahead-common.c +=================================================================== +--- systemd-209.orig/src/readahead/readahead-common.c 2014-02-12 18:42:33.810685053 -0800 ++++ systemd-209/src/readahead/readahead-common.c 2014-02-19 23:49:31.856661142 -0800 +@@ -22,7 +22,9 @@ + #include <errno.h> + #include <stdlib.h> + #include <string.h> ++#ifndef __UCLIBC__ + #include <sys/sysinfo.h> ++#endif + #include <sys/inotify.h> + #include <fcntl.h> + #include <sys/mman.h> diff --git a/meta-edison-distro/recipes-core/systemd/systemd_%.bbappend b/meta-edison-distro/recipes-core/systemd/systemd_%.bbappend new file mode 100644 index 0000000..07b6cb2 --- /dev/null +++ b/meta-edison-distro/recipes-core/systemd/systemd_%.bbappend @@ -0,0 +1,34 @@ +FILESEXTRAPATHS_prepend := "${THISDIR}/files:" +SRC_URI += "file://journald.conf \ + file://timesyncd.conf \ + file://system.conf \ + file://systemd-reboot-service.patch \ + file://hsu-pm-runtime.service \ + file://usb0.network \ + file://edison-machine-id.service" + +do_install_append() { + # Push the custom conf files on target + install -m 0644 ${WORKDIR}/journald.conf ${D}${sysconfdir}/systemd + install -m 0644 ${WORKDIR}/system.conf ${D}${sysconfdir}/systemd + install -m 0644 ${WORKDIR}/timesyncd.conf ${D}${sysconfdir}/systemd + install -m 0644 ${WORKDIR}/usb0.network ${D}${sysconfdir}/systemd/network + + # enable timesyncd service + install -d ${D}${sysconfdir}/systemd/system/sysinit.target.wants + ln -sf ${systemd_unitdir}/system/systemd-timesyncd.service \ + ${D}${sysconfdir}/systemd/system/sysinit.target.wants/systemd-timesyncd.service + + # enable a custom service to enable the hsu driver's runtime pm + install -d ${D}${sysconfdir}/systemd/system/default.target.wants + install -m 0644 ${WORKDIR}/hsu-pm-runtime.service \ + ${D}${systemd_unitdir}/system/hsu-pm-runtime.service + + # enable a custom service to provide a persistant machine-id value to Edison + install -d ${D}${sysconfdir}/systemd/system/basic.target.wants + install -m 0644 ${WORKDIR}/edison-machine-id.service \ + ${D}${systemd_unitdir}/system/edison-machine-id.service + ln -sf ${systemd_unitdir}/system/edison-machine-id.service \ + ${D}${sysconfdir}/systemd/system/basic.target.wants/edison-machine-id.service + +} diff --git a/meta-edison-distro/recipes-core/systemd/systemd_213.bb b/meta-edison-distro/recipes-core/systemd/systemd_213.bb new file mode 100644 index 0000000..003b33e --- /dev/null +++ b/meta-edison-distro/recipes-core/systemd/systemd_213.bb @@ -0,0 +1,351 @@ +SUMMARY = "System and service manager for Linux, replacing SysVinit" +HOMEPAGE = "http://www.freedesktop.org/wiki/Software/systemd" + +LICENSE = "GPLv2 & LGPLv2.1 & MIT" +LIC_FILES_CHKSUM = "file://LICENSE.GPL2;md5=751419260aa954499f7abaabaa882bbe \ + file://LICENSE.LGPL2.1;md5=4fbd65380cdd255951079008b364516c \ + file://LICENSE.MIT;md5=544799d0b492f119fa04641d1b8868ed" + +PROVIDES = "udev" + +PE = "1" + +DEPENDS = "kmod docbook-sgml-dtd-4.1-native intltool-native gperf-native acl readline dbus libcap libcgroup glib-2.0 qemu-native util-linux" +DEPENDS += "${@bb.utils.contains('DISTRO_FEATURES', 'pam', 'libpam', '', d)}" + +SECTION = "base/shell" + +inherit gtk-doc useradd pkgconfig autotools perlnative update-rc.d update-alternatives qemu systemd ptest + +SRCREV = "c9679c652b3c31f2510e8805d81630680ebc7e95" + +PV = "213+git${SRCPV}" + +SRC_URI = "git://anongit.freedesktop.org/systemd/systemd;branch=master;protocol=git \ + file://binfmt-install.patch \ + file://systemd-pam-configure-check-uclibc.patch \ + file://systemd-pam-fix-execvpe.patch \ + file://systemd-pam-fix-fallocate.patch \ + file://systemd-pam-fix-mkostemp.patch \ + file://optional_secure_getenv.patch \ + file://0001-uClibc-doesn-t-implement-pwritev-preadv.patch \ + file://uclibc-sysinfo_h.patch \ + file://uclibc-get-physmem.patch \ + file://touchscreen.rules \ + file://00-create-volatile.conf \ + file://init \ + file://run-ptest \ + file://systemd-older-kernel.patch \ + " + +S = "${WORKDIR}/git" + +SRC_URI_append_libc-uclibc = "\ + file://systemd-pam-fix-getty-unit.patch \ + " +LDFLAGS_append_libc-uclibc = " -lrt" + +GTKDOC_DOCDIR = "${S}/docs/" + +PACKAGECONFIG ??= "xz" +# Sign the journal for anti-tampering +PACKAGECONFIG[gcrypt] = "--enable-gcrypt,--disable-gcrypt,libgcrypt" +# regardless of PACKAGECONFIG, libgcrypt is always required to expand +# the AM_PATH_LIBGCRYPT autoconf macro +DEPENDS += "libgcrypt" +# Compress the journal +PACKAGECONFIG[xz] = "--enable-xz,--disable-xz,xz" +PACKAGECONFIG[cryptsetup] = "--enable-libcryptsetup,--disable-libcryptsetup,cryptsetup" +PACKAGECONFIG[microhttpd] = "--enable-microhttpd,--disable-microhttpd,libmicrohttpd" + +CACHED_CONFIGUREVARS = "ac_cv_path_KILL=${base_bindir}/kill" + +# Helper variables to clarify locations. This mirrors the logic in systemd's +# build system. +rootprefix ?= "${base_prefix}" +rootlibdir ?= "${base_libdir}" +rootlibexecdir = "${rootprefix}/lib" + +# The gtk+ tools should get built as a separate recipe e.g. systemd-tools +EXTRA_OECONF = " --with-rootprefix=${rootprefix} \ + --with-rootlibdir=${rootlibdir} \ + ${@bb.utils.contains('DISTRO_FEATURES', 'pam', '--enable-pam', '--disable-pam', d)} \ + --disable-manpages \ + --disable-coredump \ + --disable-introspection \ + --disable-kdbus \ + --enable-split-usr \ + --without-python \ + --with-sysvrcnd-path=${sysconfdir} \ + --with-firmware-path=/lib/firmware \ + ac_cv_path_KILL=${base_bindir}/kill \ + " +# uclibc does not have NSS +EXTRA_OECONF_append_libc-uclibc = " --disable-myhostname " + +do_configure_prepend() { + export CPP="${HOST_PREFIX}cpp ${TOOLCHAIN_OPTIONS} ${HOST_CC_ARCH}" + export NM="${HOST_PREFIX}gcc-nm" + export AR="${HOST_PREFIX}gcc-ar" + export RANLIB="${HOST_PREFIX}gcc-ranlib" + export KMOD="${base_bindir}/kmod" + if [ -d ${S}/units.pre_sed ] ; then + cp -r ${S}/units.pre_sed ${S}/units + else + cp -r ${S}/units ${S}/units.pre_sed + fi + sed -i -e 's:=/root:=${ROOT_HOME}:g' ${S}/units/*.service* + sed -i '/ln --relative --help/d' ${S}/configure.ac + sed -i -e 's:\$(LN_S) --relative -f:lnr:g' ${S}/Makefile.am + sed -i -e 's:\$(LN_S) --relative:lnr:g' ${S}/Makefile.am +} + +do_install() { + autotools_do_install + install -d ${D}/${base_sbindir} + # Provided by a separate recipe + rm ${D}${systemd_unitdir}/system/serial-getty* -f + + # Provide support for initramfs + [ ! -e ${D}/init ] && ln -s ${rootlibexecdir}/systemd/systemd ${D}/init + [ ! -e ${D}/${base_sbindir}/udevd ] && ln -s ${rootlibexecdir}/systemd/systemd-udevd ${D}/${base_sbindir}/udevd + + # Create machine-id + # 20:12 < mezcalero> koen: you have three options: a) run systemd-machine-id-setup at install time, b) have / read-only and an empty file there (for stateless) and c) boot with / writable + touch ${D}${sysconfdir}/machine-id + + install -m 0644 ${WORKDIR}/*.rules ${D}${sysconfdir}/udev/rules.d/ + + install -m 0644 ${WORKDIR}/00-create-volatile.conf ${D}${sysconfdir}/tmpfiles.d/ + + if ${@bb.utils.contains('DISTRO_FEATURES','sysvinit','true','false',d)}; then + install -d ${D}${sysconfdir}/init.d + install -m 0755 ${WORKDIR}/init ${D}${sysconfdir}/init.d/systemd-udevd + sed -i s%@UDEVD@%${rootlibexecdir}/systemd/systemd-udevd% ${D}${sysconfdir}/init.d/systemd-udevd + fi + + # Delete journal README, as log can be symlinked inside volatile. + rm -f ${D}/${localstatedir}/log/README +} + +do_install_ptest () { + install -d ${D}${PTEST_PATH}/test + cp -rf ${S}/test/* ${D}${PTEST_PATH}/test + install -m 0755 ${B}/test-udev ${D}${PTEST_PATH}/ + install -d ${D}${PTEST_PATH}/build-aux + cp ${S}/build-aux/test-driver ${D}${PTEST_PATH}/build-aux/ + cp -rf ${B}/rules ${D}${PTEST_PATH}/ + # This directory needs to be there for udev-test.pl to work. + install -d ${D}${libdir}/udev/rules.d + cp ${B}/Makefile ${D}${PTEST_PATH}/ + cp ${S}/test/sys.tar.xz ${D}${PTEST_PATH}/test + sed -i 's/"tree"/"ls"/' ${D}${PTEST_PATH}/test/udev-test.pl + sed -i 's#${S}#${PTEST_PATH}#g' ${D}${PTEST_PATH}/Makefile + sed -i 's#${B}#${PTEST_PATH}#g' ${D}${PTEST_PATH}/Makefile +} + +python populate_packages_prepend (){ + systemdlibdir = d.getVar("rootlibdir", True) + do_split_packages(d, systemdlibdir, '^lib(.*)\.so\.*', 'lib%s', 'Systemd %s library', extra_depends='', allow_links=True) +} +PACKAGES_DYNAMIC += "^lib(udev|gudev|systemd).*" + +PACKAGES =+ "${PN}-gui ${PN}-vconsole-setup ${PN}-initramfs ${PN}-analyze ${PN}-kernel-install \ + ${PN}-rpm-macros ${PN}-binfmt ${PN}-pam ${PN}-zsh" + +SYSTEMD_PACKAGES = "${PN}-binfmt" +SYSTEMD_SERVICE_${PN}-binfmt = "systemd-binfmt.service" + +USERADD_PACKAGES = "${PN}" +USERADD_PARAM_${PN} += "--system systemd-journal-gateway;--system systemd-timesync" +GROUPADD_PARAM_${PN} = "-r lock; -r systemd-journal" + +FILES_${PN}-analyze = "${bindir}/systemd-analyze" + +FILES_${PN}-initramfs = "/init" +RDEPENDS_${PN}-initramfs = "${PN}" + +# The test cases need perl and bash to run correctly. +RDEPENDS_${PN}-ptest += "perl bash" +FILES_${PN}-ptest += "${libdir}/udev/rules.d" + +FILES_${PN}-dbg += "${libdir}/systemd/ptest/.debug" + +FILES_${PN}-gui = "${bindir}/systemadm" + +FILES_${PN}-vconsole-setup = "${rootlibexecdir}/systemd/systemd-vconsole-setup \ + ${systemd_unitdir}/system/systemd-vconsole-setup.service \ + ${systemd_unitdir}/system/sysinit.target.wants/systemd-vconsole-setup.service" + +FILES_${PN}-kernel-install = "${bindir}/kernel-install \ + ${sysconfdir}/kernel/ \ + ${exec_prefix}/lib/kernel \ + " +FILES_${PN}-rpm-macros = "${exec_prefix}/lib/rpm \ + " + +FILES_${PN}-zsh = "${datadir}/zsh/site-functions" + +FILES_${PN}-binfmt = "${sysconfdir}/binfmt.d/ \ + ${exec_prefix}/lib/binfmt.d \ + ${rootlibexecdir}/systemd/systemd-binfmt \ + ${systemd_unitdir}/system/proc-sys-fs-binfmt_misc.* \ + ${systemd_unitdir}/system/systemd-binfmt.service" +RRECOMMENDS_${PN}-binfmt = "kernel-module-binfmt-misc" + +RRECOMMENDS_${PN}-vconsole-setup = "kbd kbd-consolefonts" + +CONFFILES_${PN} = "${sysconfdir}/systemd/journald.conf \ + ${sysconfdir}/systemd/logind.conf \ + ${sysconfdir}/systemd/system.conf \ + ${sysconfdir}/systemd/user.conf" + +FILES_${PN} = " ${base_bindir}/* \ + ${datadir}/bash-completion \ + ${datadir}/dbus-1/services \ + ${datadir}/dbus-1/system-services \ + ${datadir}/polkit-1 \ + ${datadir}/${BPN} \ + ${sysconfdir}/bash_completion.d/ \ + ${sysconfdir}/dbus-1/ \ + ${sysconfdir}/machine-id \ + ${sysconfdir}/modules-load.d/ \ + ${sysconfdir}/sysctl.d/ \ + ${sysconfdir}/systemd/ \ + ${sysconfdir}/tmpfiles.d/ \ + ${sysconfdir}/xdg/ \ + ${sysconfdir}/init.d/README \ + ${rootlibexecdir}/systemd/* \ + ${systemd_unitdir}/* \ + ${base_libdir}/security/*.so \ + ${libdir}/libnss_myhostname.so.2 \ + /cgroup \ + ${bindir}/systemd* \ + ${bindir}/busctl \ + ${bindir}/localectl \ + ${bindir}/hostnamectl \ + ${bindir}/timedatectl \ + ${bindir}/bootctl \ + ${bindir}/kernel-install \ + ${exec_prefix}/lib/tmpfiles.d/*.conf \ + ${exec_prefix}/lib/systemd \ + ${exec_prefix}/lib/modules-load.d \ + ${exec_prefix}/lib/sysctl.d \ + ${localstatedir} \ + /lib/udev/rules.d/70-uaccess.rules \ + /lib/udev/rules.d/71-seat.rules \ + /lib/udev/rules.d/73-seat-late.rules \ + /lib/udev/rules.d/99-systemd.rules \ + ${@bb.utils.contains('DISTRO_FEATURES', 'pam', '${sysconfdir}/pam.d', '', d)} \ + " + +FILES_${PN}-dbg += "${rootlibdir}/.debug ${systemd_unitdir}/.debug ${systemd_unitdir}/*/.debug ${base_libdir}/security/.debug/" +FILES_${PN}-dev += "${base_libdir}/security/*.la ${datadir}/dbus-1/interfaces/ ${sysconfdir}/rpm/macros.systemd" + +RDEPENDS_${PN} += "kmod dbus util-linux-mount udev (= ${EXTENDPKGV})" + +RRECOMMENDS_${PN} += "systemd-serialgetty systemd-compat-units \ + util-linux-agetty \ + util-linux-fsck e2fsprogs-e2fsck \ + kernel-module-autofs4 kernel-module-unix kernel-module-ipv6 \ +" + +PACKAGES =+ "udev-dbg udev udev-hwdb" + +FILES_udev-dbg += "/lib/udev/.debug" + +RPROVIDES_udev = "hotplug" +RRECOMMENDS_udev += "udev-hwdb" + +FILES_udev += "${base_sbindir}/udevd \ + ${rootlibexecdir}/systemd/systemd-udevd \ + ${rootlibexecdir}/udev/accelerometer \ + ${rootlibexecdir}/udev/ata_id \ + ${rootlibexecdir}/udev/cdrom_id \ + ${rootlibexecdir}/udev/collect \ + ${rootlibexecdir}/udev/findkeyboards \ + ${rootlibexecdir}/udev/keyboard-force-release.sh \ + ${rootlibexecdir}/udev/keymap \ + ${rootlibexecdir}/udev/mtd_probe \ + ${rootlibexecdir}/udev/scsi_id \ + ${rootlibexecdir}/udev/v4l_id \ + ${rootlibexecdir}/udev/keymaps \ + ${rootlibexecdir}/udev/rules.d/4*.rules \ + ${rootlibexecdir}/udev/rules.d/5*.rules \ + ${rootlibexecdir}/udev/rules.d/6*.rules \ + ${rootlibexecdir}/udev/rules.d/70-power-switch.rules \ + ${rootlibexecdir}/udev/rules.d/75*.rules \ + ${rootlibexecdir}/udev/rules.d/78*.rules \ + ${rootlibexecdir}/udev/rules.d/8*.rules \ + ${rootlibexecdir}/udev/rules.d/95*.rules \ + ${sysconfdir}/udev \ + ${sysconfdir}/init.d/systemd-udevd \ + ${systemd_unitdir}/system/*udev* \ + ${systemd_unitdir}/system/*.wants/*udev* \ + ${base_bindir}/udevadm \ + ${datadir}/bash-completion/completions/udevadm \ + " + +FILES_udev-hwdb = "${rootlibexecdir}/udev/hwdb.d" + +INITSCRIPT_PACKAGES = "udev" +INITSCRIPT_NAME_udev = "systemd-udevd" +INITSCRIPT_PARAMS_udev = "start 03 S ." + +python __anonymous() { + if not bb.utils.contains('DISTRO_FEATURES', 'sysvinit', True, False, d): + d.setVar("INHIBIT_UPDATERCD_BBCLASS", "1") +} + +# TODO: +# u-a for runlevel and telinit + +ALTERNATIVE_${PN} = "init halt reboot shutdown poweroff runlevel" + +ALTERNATIVE_TARGET[init] = "${rootlibexecdir}/systemd/systemd" +ALTERNATIVE_LINK_NAME[init] = "${base_sbindir}/init" +ALTERNATIVE_PRIORITY[init] ?= "300" + +ALTERNATIVE_TARGET[halt] = "${base_bindir}/systemctl" +ALTERNATIVE_LINK_NAME[halt] = "${base_sbindir}/halt" +ALTERNATIVE_PRIORITY[halt] ?= "300" + +ALTERNATIVE_TARGET[reboot] = "${base_bindir}/systemctl" +ALTERNATIVE_LINK_NAME[reboot] = "${base_sbindir}/reboot" +ALTERNATIVE_PRIORITY[reboot] ?= "300" + +ALTERNATIVE_TARGET[shutdown] = "${base_bindir}/systemctl" +ALTERNATIVE_LINK_NAME[shutdown] = "${base_sbindir}/shutdown" +ALTERNATIVE_PRIORITY[shutdown] ?= "300" + +ALTERNATIVE_TARGET[poweroff] = "${base_bindir}/systemctl" +ALTERNATIVE_LINK_NAME[poweroff] = "${base_sbindir}/poweroff" +ALTERNATIVE_PRIORITY[poweroff] ?= "300" + +ALTERNATIVE_TARGET[runlevel] = "${base_bindir}/systemctl" +ALTERNATIVE_LINK_NAME[runlevel] = "${base_sbindir}/runlevel" +ALTERNATIVE_PRIORITY[runlevel] ?= "300" + +pkg_postinst_udev-hwdb () { + if test -n "$D"; then + ${@qemu_run_binary(d, '$D', '${base_bindir}/udevadm')} hwdb --update \ + --root $D + else + udevadm hwdb --update + fi +} + +pkg_prerm_udev-hwdb () { + if test -n "$D"; then + exit 1 + fi + + rm -f ${sysconfdir}/udev/hwdb.bin +} + +# As this recipe builds udev, respect systemd being in DISTRO_FEATURES so +# that we don't build both udev and systemd in world builds. +python () { + if not bb.utils.contains ('DISTRO_FEATURES', 'systemd', True, False, d): + raise bb.parse.SkipPackage("'systemd' not in DISTRO_FEATURES") +} diff --git a/meta-edison-distro/recipes-devtools/e2fsprogs/e2fsprogs_%.bbappend b/meta-edison-distro/recipes-devtools/e2fsprogs/e2fsprogs_%.bbappend new file mode 100644 index 0000000..01a6d33 --- /dev/null +++ b/meta-edison-distro/recipes-devtools/e2fsprogs/e2fsprogs_%.bbappend @@ -0,0 +1,11 @@ +# Add resize2fs tool + + +EXTRA_OECONF += "\ + --enable-resizer \ +" + +PACKAGES =+ "e2fsprogs-resize2fs" + +FILES_e2fsprogs-resize2fs = "${base_sbindir}/resize2fs" + diff --git a/meta-edison-distro/recipes-devtools/swig/swig.inc b/meta-edison-distro/recipes-devtools/swig/swig.inc new file mode 100644 index 0000000..5571a55 --- /dev/null +++ b/meta-edison-distro/recipes-devtools/swig/swig.inc @@ -0,0 +1,63 @@ +DESCRIPTION = "SWIG - Simplified Wrapper and Interface Generator" +HOMEPAGE = "http://swig.sourceforge.net/" +LICENSE = "BSD & GPLv3" +LIC_FILES_CHKSUM = "file://LICENSE;md5=e7807a6282784a7dde4c846626b08fc6 \ + file://LICENSE-GPL;md5=d32239bcb673463ab874e80d47fae504 \ + file://LICENSE-UNIVERSITIES;md5=8ce9dcc8f7c994de4a408b205c72ba08" + +SECTION = "devel" + +DEPENDS = "libpcre python" + +SRC_URI = "${SOURCEFORGE_MIRROR}/${BPN}/${BPN}-${PV}.tar.gz" + +inherit autotools pythonnative + +EXTRA_OECONF = " \ + --with-python=${PYTHON} \ + --without-allegrocl \ + --without-android \ + --without-boost \ + --without-chicken \ + --without-clisp \ + --without-csharp \ + --without-d \ + --without-gcj \ + --without-go \ + --without-guile \ + --without-java \ + --without-lua \ + --without-mzscheme \ + --without-ocaml \ + --without-octave \ + --without-perl5 \ + --without-pike \ + --without-php \ + --without-python3 \ + --without-r \ + --without-ruby \ + --without-tcl \ +" + +BBCLASSEXTEND = "native nativesdk" + +do_configure() { + install -m 0755 ${STAGING_DATADIR_NATIVE}/gnu-config/config.guess ${S}/Tools/config + install -m 0755 ${STAGING_DATADIR_NATIVE}/gnu-config/config.sub ${S}/Tools/config + install -m 0755 ${STAGING_DATADIR_NATIVE}/gnu-config/config.guess ${S} + install -m 0755 ${STAGING_DATADIR_NATIVE}/gnu-config/config.sub ${S} + oe_runconf +} + +do_install_append_class-nativesdk() { + cd ${D}${bindir} + ln -s swig swig2.0 +} + +def swiglib_relpath(d): + swiglib = d.getVar('datadir', True) + "/" + d.getVar('BPN', True) + "/" + d.getVar('PV', True) + return os.path.relpath(swiglib, d.getVar('bindir', True)) + +do_install_append_class-native() { + create_wrapper ${D}${bindir}/swig SWIG_LIB='`dirname $''realpath`'/${@swiglib_relpath(d)} +}
\ No newline at end of file diff --git a/meta-edison-distro/recipes-devtools/swig/swig/0001-Use-proc-self-exe-for-swig-swiglib-on-non-Win32-plat.patch b/meta-edison-distro/recipes-devtools/swig/swig/0001-Use-proc-self-exe-for-swig-swiglib-on-non-Win32-plat.patch new file mode 100644 index 0000000..4115469 --- /dev/null +++ b/meta-edison-distro/recipes-devtools/swig/swig/0001-Use-proc-self-exe-for-swig-swiglib-on-non-Win32-plat.patch @@ -0,0 +1,56 @@ +--- + Source/Modules/main.cxx | 24 ++++++++++++++++++++++-- + 1 file changed, 22 insertions(+), 2 deletions(-) + +diff --git a/Source/Modules/main.cxx b/Source/Modules/main.cxx +index d2f5d3b..cbb0a12 100644 +--- a/Source/Modules/main.cxx ++++ b/Source/Modules/main.cxx +@@ -26,6 +26,11 @@ char cvsroot_main_cxx[] = "$Id$"; + #include "cparse.h" + #include <ctype.h> + #include <limits.h> // for INT_MAX ++#ifndef _WIN32 ++#include <cstddef> ++#include <unistd.h> // for readlink ++#include <sys/stat.h> // for stat ++#endif + + // Global variables + +@@ -902,9 +907,9 @@ int SWIG_main(int argc, char *argv[], Language *l) { + + // Check for SWIG_LIB environment variable + if ((c = getenv("SWIG_LIB")) == (char *) 0) { ++ char *p; + #if defined(_WIN32) + char buf[MAX_PATH]; +- char *p; + if (!(GetModuleFileName(0, buf, MAX_PATH) == 0 || (p = strrchr(buf, '\\')) == 0)) { + *(p + 1) = '\0'; + SwigLib = NewStringf("%sLib", buf); // Native windows installation path +@@ -914,7 +919,22 @@ int SWIG_main(int argc, char *argv[], Language *l) { + if (Len(SWIG_LIB_WIN_UNIX) > 0) + SwigLibWinUnix = NewString(SWIG_LIB_WIN_UNIX); // Unix installation path using a drive letter (for msys/mingw) + #else +- SwigLib = NewString(SWIG_LIB); ++ char buf[PATH_MAX]; ++ if (0 < ::readlink("/proc/self/exe", buf, sizeof(buf)) && ++ (p = ::strstr(buf, "/bin/swig"))) { ++ int major, minor, patch; ++ const int ret = ::sscanf(VERSION, "%d.%d.%d", &major, &minor, &patch); ++ if (3 == ret) { ++ const ::ptrdiff_t dir_part_len = p - buf; ++ ::snprintf(p, PATH_MAX - dir_part_len, "/share/swig/%d.%d.%d", major, minor, patch); ++ struct ::stat stat_res; ++ if (0 == ::stat(buf, &stat_res) && S_ISDIR(stat_res.st_mode)) { ++ SwigLib = NewString(buf); ++ } ++ } ++ } ++ if (NULL == SwigLib) ++ SwigLib = NewString(SWIG_LIB); + #endif + } else { + SwigLib = NewString(c); +-- diff --git a/meta-edison-distro/recipes-devtools/swig/swig/0001-configure-use-pkg-config-for-pcre-detection.patch b/meta-edison-distro/recipes-devtools/swig/swig/0001-configure-use-pkg-config-for-pcre-detection.patch new file mode 100644 index 0000000..5a05d7b --- /dev/null +++ b/meta-edison-distro/recipes-devtools/swig/swig/0001-configure-use-pkg-config-for-pcre-detection.patch @@ -0,0 +1,55 @@ +--- + configure.ac | 38 +++++++------------------------------- + 1 file changed, 7 insertions(+), 31 deletions(-) + +diff --git a/configure.ac b/configure.ac +index 0c984b7..6edcec1 100644 +--- a/configure.ac ++++ b/configure.ac +@@ -70,38 +70,14 @@ AC_MSG_RESULT([$with_pcre]) + + dnl To make configuring easier, check for a locally built PCRE using the Tools/pcre-build.sh script + if test x"${with_pcre}" = xyes ; then +- AC_MSG_CHECKING([whether to use local PCRE]) +- local_pcre_config=no +- if test -z $PCRE_CONFIG; then +- if test -f `pwd`/pcre/pcre-swig-install/bin/pcre-config; then +- PCRE_CONFIG=`pwd`/pcre/pcre-swig-install/bin/pcre-config +- local_pcre_config=$PCRE_CONFIG +- fi +- fi +- AC_MSG_RESULT([$local_pcre_config]) +-fi +-AS_IF([test "x$with_pcre" != xno], +- [AX_PATH_GENERIC([pcre], +- [], dnl Minimal version of PCRE we need -- accept any +- [], dnl custom sed script for version parsing is not needed +- [AC_DEFINE([HAVE_PCRE], [1], [Define if you have PCRE library]) +- LIBS="$LIBS $PCRE_LIBS" +- CPPFLAGS="$CPPFLAGS $PCRE_CFLAGS" +- ], +- [AC_MSG_FAILURE([ +- Cannot find pcre-config script from PCRE (Perl Compatible Regular Expressions) +- library package. This dependency is needed for configure to complete, +- Either: +- - Install the PCRE developer package on your system (preferred approach). +- - Download the PCRE source tarball, build and install on your system +- as you would for any package built from source distribution. +- - Use the Tools/pcre-build.sh script to build PCRE just for SWIG to statically +- link against. Run 'Tools/pcre-build.sh --help' for instructions. +- (quite easy and does not require privileges to install PCRE on your system) +- - Use configure --without-pcre to disable regular expressions support in SWIG +- (not recommended).]) +- ]) ++ PKG_CHECK_MODULES([PCRE], [libpcre], [ ++ AC_DEFINE([HAVE_PCRE], [1], [Define if you have PCRE library]) ++ LIBS="$LIBS $PCRE_LIBS" ++ CPPFLAGS="$CPPFLAGS $PCRE_CFLAGS" ++ ], [ ++ AC_MSG_WARN([$PCRE_PKG_ERRORS]) + ]) ++fi + + + dnl CCache +-- diff --git a/meta-edison-distro/recipes-devtools/swig/swig_3.0.2.bb b/meta-edison-distro/recipes-devtools/swig/swig_3.0.2.bb new file mode 100644 index 0000000..ac41914 --- /dev/null +++ b/meta-edison-distro/recipes-devtools/swig/swig_3.0.2.bb @@ -0,0 +1,8 @@ +require ${BPN}.inc + +SRC_URI += "file://0001-Use-proc-self-exe-for-swig-swiglib-on-non-Win32-plat.patch \ + file://0001-configure-use-pkg-config-for-pcre-detection.patch \ + " + +SRC_URI[md5sum] = "62f9b0d010cef36a13a010dc530d0d41" +SRC_URI[sha256sum] = "a2669657cabcedc371f63c0457407a183e0b6b2ef4e7e303c1ec9a3964cc7813" diff --git a/meta-edison-distro/recipes-multimedia/alsa/alsa-utils_%.bbappend b/meta-edison-distro/recipes-multimedia/alsa/alsa-utils_%.bbappend new file mode 100644 index 0000000..ae82a2b --- /dev/null +++ b/meta-edison-distro/recipes-multimedia/alsa/alsa-utils_%.bbappend @@ -0,0 +1,13 @@ +# Provide default alsa configuration for Edison + +FILESEXTRAPATHS_prepend := "${THISDIR}/files/" + +SRC_URI += "\ + file://asound.state \ +" + +do_install_append() { + install -v -d ${D}/var/lib/alsa/ + install -m 644 ${WORKDIR}/asound.state ${D}/var/lib/alsa/ +} + diff --git a/meta-edison-distro/recipes-multimedia/alsa/files/asound.state b/meta-edison-distro/recipes-multimedia/alsa/files/asound.state new file mode 100644 index 0000000..18aa6e2 --- /dev/null +++ b/meta-edison-distro/recipes-multimedia/alsa/files/asound.state @@ -0,0 +1,14141 @@ +state.wm8958audio { + control.1 { + iface MIXER + name 'ssp1_out mux 0' + value fm + comment { + access 'read write' + type ENUMERATED + count 1 + item.0 fm + item.1 bt + } + } + control.2 { + iface MIXER + name 'aware_out aware 0 switch' + value false + comment { + access 'read write' + type BOOLEAN + count 1 + } + } + control.3 { + iface MIXER + name 'modem_out mix 0 modem_in' + value false + comment { + access 'read write' + type BOOLEAN + count 1 + } + } + control.4 { + iface MIXER + name 'modem_out mix 0 bt_in' + value false + comment { + access 'read write' + type BOOLEAN + count 1 + } + } + control.5 { + iface MIXER + name 'modem_out mix 0 codec_in0' + value false + comment { + access 'read write' + type BOOLEAN + count 1 + } + } + control.6 { + iface MIXER + name 'modem_out mix 0 codec_in1' + value false + comment { + access 'read write' + type BOOLEAN + count 1 + } + } + control.7 { + iface MIXER + name 'modem_out mix 0 sprot_loop_in' + value false + comment { + access 'read write' + type BOOLEAN + count 1 + } + } + control.8 { + iface MIXER + name 'modem_out mix 0 media_loop1_in' + value false + comment { + access 'read write' + type BOOLEAN + count 1 + } + } + control.9 { + iface MIXER + name 'modem_out mix 0 media_loop2_in' + value false + comment { + access 'read write' + type BOOLEAN + count 1 + } + } + control.10 { + iface MIXER + name 'modem_out mix 0 sidetone_in' + value false + comment { + access 'read write' + type BOOLEAN + count 1 + } + } + control.11 { + iface MIXER + name 'modem_out mix 0 txspeech_in' + value false + comment { + access 'read write' + type BOOLEAN + count 1 + } + } + control.12 { + iface MIXER + name 'modem_out mix 0 speech_in' + value false + comment { + access 'read write' + type BOOLEAN + count 1 + } + } + control.13 { + iface MIXER + name 'modem_out mix 0 tone_in' + value false + comment { + access 'read write' + type BOOLEAN + count 1 + } + } + control.14 { + iface MIXER + name 'modem_out mix 0 voip_in' + value false + comment { + access 'read write' + type BOOLEAN + count 1 + } + } + control.15 { + iface MIXER + name 'modem_out mix 0 pcm0_in' + value false + comment { + access 'read write' + type BOOLEAN + count 1 + } + } + control.16 { + iface MIXER + name 'modem_out mix 0 pcm1_in' + value false + comment { + access 'read write' + type BOOLEAN + count 1 + } + } + control.17 { + iface MIXER + name 'modem_out mix 0 low_pcm0_in' + value false + comment { + access 'read write' + type BOOLEAN + count 1 + } + } + control.18 { + iface MIXER + name 'modem_out mix 0 fm_in' + value false + comment { + access 'read write' + type BOOLEAN + count 1 + } + } + control.19 { + iface MIXER + name 'fm_out mix 0 modem_in' + value false + comment { + access 'read write' + type BOOLEAN + count 1 + } + } + control.20 { + iface MIXER + name 'fm_out mix 0 bt_in' + value false + comment { + access 'read write' + type BOOLEAN + count 1 + } + } + control.21 { + iface MIXER + name 'fm_out mix 0 codec_in0' + value false + comment { + access 'read write' + type BOOLEAN + count 1 + } + } + control.22 { + iface MIXER + name 'fm_out mix 0 codec_in1' + value false + comment { + access 'read write' + type BOOLEAN + count 1 + } + } + control.23 { + iface MIXER + name 'fm_out mix 0 sprot_loop_in' + value false + comment { + access 'read write' + type BOOLEAN + count 1 + } + } + control.24 { + iface MIXER + name 'fm_out mix 0 media_loop1_in' + value false + comment { + access 'read write' + type BOOLEAN + count 1 + } + } + control.25 { + iface MIXER + name 'fm_out mix 0 media_loop2_in' + value false + comment { + access 'read write' + type BOOLEAN + count 1 + } + } + control.26 { + iface MIXER + name 'fm_out mix 0 sidetone_in' + value false + comment { + access 'read write' + type BOOLEAN + count 1 + } + } + control.27 { + iface MIXER + name 'fm_out mix 0 txspeech_in' + value false + comment { + access 'read write' + type BOOLEAN + count 1 + } + } + control.28 { + iface MIXER + name 'fm_out mix 0 speech_in' + value false + comment { + access 'read write' + type BOOLEAN + count 1 + } + } + control.29 { + iface MIXER + name 'fm_out mix 0 tone_in' + value false + comment { + access 'read write' + type BOOLEAN + count 1 + } + } + control.30 { + iface MIXER + name 'fm_out mix 0 voip_in' + value false + comment { + access 'read write' + type BOOLEAN + count 1 + } + } + control.31 { + iface MIXER + name 'fm_out mix 0 pcm0_in' + value false + comment { + access 'read write' + type BOOLEAN + count 1 + } + } + control.32 { + iface MIXER + name 'fm_out mix 0 pcm1_in' + value false + comment { + access 'read write' + type BOOLEAN + count 1 + } + } + control.33 { + iface MIXER + name 'fm_out mix 0 low_pcm0_in' + value false + comment { + access 'read write' + type BOOLEAN + count 1 + } + } + control.34 { + iface MIXER + name 'fm_out mix 0 fm_in' + value false + comment { + access 'read write' + type BOOLEAN + count 1 + } + } + control.35 { + iface MIXER + name 'bt_out mix 0 modem_in' + value false + comment { + access 'read write' + type BOOLEAN + count 1 + } + } + control.36 { + iface MIXER + name 'bt_out mix 0 bt_in' + value false + comment { + access 'read write' + type BOOLEAN + count 1 + } + } + control.37 { + iface MIXER + name 'bt_out mix 0 codec_in0' + value false + comment { + access 'read write' + type BOOLEAN + count 1 + } + } + control.38 { + iface MIXER + name 'bt_out mix 0 codec_in1' + value false + comment { + access 'read write' + type BOOLEAN + count 1 + } + } + control.39 { + iface MIXER + name 'bt_out mix 0 sprot_loop_in' + value false + comment { + access 'read write' + type BOOLEAN + count 1 + } + } + control.40 { + iface MIXER + name 'bt_out mix 0 media_loop1_in' + value false + comment { + access 'read write' + type BOOLEAN + count 1 + } + } + control.41 { + iface MIXER + name 'bt_out mix 0 media_loop2_in' + value false + comment { + access 'read write' + type BOOLEAN + count 1 + } + } + control.42 { + iface MIXER + name 'bt_out mix 0 sidetone_in' + value false + comment { + access 'read write' + type BOOLEAN + count 1 + } + } + control.43 { + iface MIXER + name 'bt_out mix 0 txspeech_in' + value false + comment { + access 'read write' + type BOOLEAN + count 1 + } + } + control.44 { + iface MIXER + name 'bt_out mix 0 speech_in' + value false + comment { + access 'read write' + type BOOLEAN + count 1 + } + } + control.45 { + iface MIXER + name 'bt_out mix 0 tone_in' + value false + comment { + access 'read write' + type BOOLEAN + count 1 + } + } + control.46 { + iface MIXER + name 'bt_out mix 0 voip_in' + value false + comment { + access 'read write' + type BOOLEAN + count 1 + } + } + control.47 { + iface MIXER + name 'bt_out mix 0 pcm0_in' + value false + comment { + access 'read write' + type BOOLEAN + count 1 + } + } + control.48 { + iface MIXER + name 'bt_out mix 0 pcm1_in' + value false + comment { + access 'read write' + type BOOLEAN + count 1 + } + } + control.49 { + iface MIXER + name 'bt_out mix 0 low_pcm0_in' + value false + comment { + access 'read write' + type BOOLEAN + count 1 + } + } + control.50 { + iface MIXER + name 'bt_out mix 0 fm_in' + value false + comment { + access 'read write' + type BOOLEAN + count 1 + } + } + control.51 { + iface MIXER + name 'codec_out1 mix 0 modem_in' + value false + comment { + access 'read write' + type BOOLEAN + count 1 + } + } + control.52 { + iface MIXER + name 'codec_out1 mix 0 bt_in' + value false + comment { + access 'read write' + type BOOLEAN + count 1 + } + } + control.53 { + iface MIXER + name 'codec_out1 mix 0 codec_in0' + value false + comment { + access 'read write' + type BOOLEAN + count 1 + } + } + control.54 { + iface MIXER + name 'codec_out1 mix 0 codec_in1' + value false + comment { + access 'read write' + type BOOLEAN + count 1 + } + } + control.55 { + iface MIXER + name 'codec_out1 mix 0 sprot_loop_in' + value false + comment { + access 'read write' + type BOOLEAN + count 1 + } + } + control.56 { + iface MIXER + name 'codec_out1 mix 0 media_loop1_in' + value false + comment { + access 'read write' + type BOOLEAN + count 1 + } + } + control.57 { + iface MIXER + name 'codec_out1 mix 0 media_loop2_in' + value false + comment { + access 'read write' + type BOOLEAN + count 1 + } + } + control.58 { + iface MIXER + name 'codec_out1 mix 0 sidetone_in' + value false + comment { + access 'read write' + type BOOLEAN + count 1 + } + } + control.59 { + iface MIXER + name 'codec_out1 mix 0 txspeech_in' + value false + comment { + access 'read write' + type BOOLEAN + count 1 + } + } + control.60 { + iface MIXER + name 'codec_out1 mix 0 speech_in' + value false + comment { + access 'read write' + type BOOLEAN + count 1 + } + } + control.61 { + iface MIXER + name 'codec_out1 mix 0 tone_in' + value false + comment { + access 'read write' + type BOOLEAN + count 1 + } + } + control.62 { + iface MIXER + name 'codec_out1 mix 0 voip_in' + value false + comment { + access 'read write' + type BOOLEAN + count 1 + } + } + control.63 { + iface MIXER + name 'codec_out1 mix 0 pcm0_in' + value false + comment { + access 'read write' + type BOOLEAN + count 1 + } + } + control.64 { + iface MIXER + name 'codec_out1 mix 0 pcm1_in' + value false + comment { + access 'read write' + type BOOLEAN + count 1 + } + } + control.65 { + iface MIXER + name 'codec_out1 mix 0 low_pcm0_in' + value false + comment { + access 'read write' + type BOOLEAN + count 1 + } + } + control.66 { + iface MIXER + name 'codec_out1 mix 0 fm_in' + value false + comment { + access 'read write' + type BOOLEAN + count 1 + } + } + control.67 { + iface MIXER + name 'codec_out0 mix 0 modem_in' + value false + comment { + access 'read write' + type BOOLEAN + count 1 + } + } + control.68 { + iface MIXER + name 'codec_out0 mix 0 bt_in' + value false + comment { + access 'read write' + type BOOLEAN + count 1 + } + } + control.69 { + iface MIXER + name 'codec_out0 mix 0 codec_in0' + value false + comment { + access 'read write' + type BOOLEAN + count 1 + } + } + control.70 { + iface MIXER + name 'codec_out0 mix 0 codec_in1' + value false + comment { + access 'read write' + type BOOLEAN + count 1 + } + } + control.71 { + iface MIXER + name 'codec_out0 mix 0 sprot_loop_in' + value true + comment { + access 'read write' + type BOOLEAN + count 1 + } + } + control.72 { + iface MIXER + name 'codec_out0 mix 0 media_loop1_in' + value false + comment { + access 'read write' + type BOOLEAN + count 1 + } + } + control.73 { + iface MIXER + name 'codec_out0 mix 0 media_loop2_in' + value false + comment { + access 'read write' + type BOOLEAN + count 1 + } + } + control.74 { + iface MIXER + name 'codec_out0 mix 0 sidetone_in' + value false + comment { + access 'read write' + type BOOLEAN + count 1 + } + } + control.75 { + iface MIXER + name 'codec_out0 mix 0 txspeech_in' + value false + comment { + access 'read write' + type BOOLEAN + count 1 + } + } + control.76 { + iface MIXER + name 'codec_out0 mix 0 speech_in' + value false + comment { + access 'read write' + type BOOLEAN + count 1 + } + } + control.77 { + iface MIXER + name 'codec_out0 mix 0 tone_in' + value false + comment { + access 'read write' + type BOOLEAN + count 1 + } + } + control.78 { + iface MIXER + name 'codec_out0 mix 0 voip_in' + value false + comment { + access 'read write' + type BOOLEAN + count 1 + } + } + control.79 { + iface MIXER + name 'codec_out0 mix 0 pcm0_in' + value false + comment { + access 'read write' + type BOOLEAN + count 1 + } + } + control.80 { + iface MIXER + name 'codec_out0 mix 0 pcm1_in' + value false + comment { + access 'read write' + type BOOLEAN + count 1 + } + } + control.81 { + iface MIXER + name 'codec_out0 mix 0 low_pcm0_in' + value false + comment { + access 'read write' + type BOOLEAN + count 1 + } + } + control.82 { + iface MIXER + name 'codec_out0 mix 0 fm_in' + value false + comment { + access 'read write' + type BOOLEAN + count 1 + } + } + control.83 { + iface MIXER + name 'rxspeech_out mix 0 modem_in' + value false + comment { + access 'read write' + type BOOLEAN + count 1 + } + } + control.84 { + iface MIXER + name 'rxspeech_out mix 0 bt_in' + value false + comment { + access 'read write' + type BOOLEAN + count 1 + } + } + control.85 { + iface MIXER + name 'rxspeech_out mix 0 codec_in0' + value false + comment { + access 'read write' + type BOOLEAN + count 1 + } + } + control.86 { + iface MIXER + name 'rxspeech_out mix 0 codec_in1' + value false + comment { + access 'read write' + type BOOLEAN + count 1 + } + } + control.87 { + iface MIXER + name 'rxspeech_out mix 0 sprot_loop_in' + value false + comment { + access 'read write' + type BOOLEAN + count 1 + } + } + control.88 { + iface MIXER + name 'rxspeech_out mix 0 media_loop1_in' + value false + comment { + access 'read write' + type BOOLEAN + count 1 + } + } + control.89 { + iface MIXER + name 'rxspeech_out mix 0 media_loop2_in' + value false + comment { + access 'read write' + type BOOLEAN + count 1 + } + } + control.90 { + iface MIXER + name 'rxspeech_out mix 0 sidetone_in' + value false + comment { + access 'read write' + type BOOLEAN + count 1 + } + } + control.91 { + iface MIXER + name 'rxspeech_out mix 0 txspeech_in' + value false + comment { + access 'read write' + type BOOLEAN + count 1 + } + } + control.92 { + iface MIXER + name 'rxspeech_out mix 0 speech_in' + value false + comment { + access 'read write' + type BOOLEAN + count 1 + } + } + control.93 { + iface MIXER + name 'rxspeech_out mix 0 tone_in' + value false + comment { + access 'read write' + type BOOLEAN + count 1 + } + } + control.94 { + iface MIXER + name 'rxspeech_out mix 0 voip_in' + value false + comment { + access 'read write' + type BOOLEAN + count 1 + } + } + control.95 { + iface MIXER + name 'rxspeech_out mix 0 pcm0_in' + value false + comment { + access 'read write' + type BOOLEAN + count 1 + } + } + control.96 { + iface MIXER + name 'rxspeech_out mix 0 pcm1_in' + value false + comment { + access 'read write' + type BOOLEAN + count 1 + } + } + control.97 { + iface MIXER + name 'rxspeech_out mix 0 low_pcm0_in' + value false + comment { + access 'read write' + type BOOLEAN + count 1 + } + } + control.98 { + iface MIXER + name 'rxspeech_out mix 0 fm_in' + value false + comment { + access 'read write' + type BOOLEAN + count 1 + } + } + control.99 { + iface MIXER + name 'speech_out mix 0 modem_in' + value false + comment { + access 'read write' + type BOOLEAN + count 1 + } + } + control.100 { + iface MIXER + name 'speech_out mix 0 bt_in' + value false + comment { + access 'read write' + type BOOLEAN + count 1 + } + } + control.101 { + iface MIXER + name 'speech_out mix 0 codec_in0' + value false + comment { + access 'read write' + type BOOLEAN + count 1 + } + } + control.102 { + iface MIXER + name 'speech_out mix 0 codec_in1' + value false + comment { + access 'read write' + type BOOLEAN + count 1 + } + } + control.103 { + iface MIXER + name 'speech_out mix 0 sprot_loop_in' + value false + comment { + access 'read write' + type BOOLEAN + count 1 + } + } + control.104 { + iface MIXER + name 'speech_out mix 0 media_loop1_in' + value false + comment { + access 'read write' + type BOOLEAN + count 1 + } + } + control.105 { + iface MIXER + name 'speech_out mix 0 media_loop2_in' + value false + comment { + access 'read write' + type BOOLEAN + count 1 + } + } + control.106 { + iface MIXER + name 'speech_out mix 0 sidetone_in' + value false + comment { + access 'read write' + type BOOLEAN + count 1 + } + } + control.107 { + iface MIXER + name 'speech_out mix 0 txspeech_in' + value false + comment { + access 'read write' + type BOOLEAN + count 1 + } + } + control.108 { + iface MIXER + name 'speech_out mix 0 speech_in' + value false + comment { + access 'read write' + type BOOLEAN + count 1 + } + } + control.109 { + iface MIXER + name 'speech_out mix 0 tone_in' + value false + comment { + access 'read write' + type BOOLEAN + count 1 + } + } + control.110 { + iface MIXER + name 'speech_out mix 0 voip_in' + value false + comment { + access 'read write' + type BOOLEAN + count 1 + } + } + control.111 { + iface MIXER + name 'speech_out mix 0 pcm0_in' + value false + comment { + access 'read write' + type BOOLEAN + count 1 + } + } + control.112 { + iface MIXER + name 'speech_out mix 0 pcm1_in' + value false + comment { + access 'read write' + type BOOLEAN + count 1 + } + } + control.113 { + iface MIXER + name 'speech_out mix 0 low_pcm0_in' + value false + comment { + access 'read write' + type BOOLEAN + count 1 + } + } + control.114 { + iface MIXER + name 'speech_out mix 0 fm_in' + value false + comment { + access 'read write' + type BOOLEAN + count 1 + } + } + control.115 { + iface MIXER + name 'hf_out mix 0 modem_in' + value false + comment { + access 'read write' + type BOOLEAN + count 1 + } + } + control.116 { + iface MIXER + name 'hf_out mix 0 bt_in' + value false + comment { + access 'read write' + type BOOLEAN + count 1 + } + } + control.117 { + iface MIXER + name 'hf_out mix 0 codec_in0' + value false + comment { + access 'read write' + type BOOLEAN + count 1 + } + } + control.118 { + iface MIXER + name 'hf_out mix 0 codec_in1' + value false + comment { + access 'read write' + type BOOLEAN + count 1 + } + } + control.119 { + iface MIXER + name 'hf_out mix 0 sprot_loop_in' + value false + comment { + access 'read write' + type BOOLEAN + count 1 + } + } + control.120 { + iface MIXER + name 'hf_out mix 0 media_loop1_in' + value false + comment { + access 'read write' + type BOOLEAN + count 1 + } + } + control.121 { + iface MIXER + name 'hf_out mix 0 media_loop2_in' + value false + comment { + access 'read write' + type BOOLEAN + count 1 + } + } + control.122 { + iface MIXER + name 'hf_out mix 0 sidetone_in' + value false + comment { + access 'read write' + type BOOLEAN + count 1 + } + } + control.123 { + iface MIXER + name 'hf_out mix 0 txspeech_in' + value false + comment { + access 'read write' + type BOOLEAN + count 1 + } + } + control.124 { + iface MIXER + name 'hf_out mix 0 speech_in' + value false + comment { + access 'read write' + type BOOLEAN + count 1 + } + } + control.125 { + iface MIXER + name 'hf_out mix 0 tone_in' + value false + comment { + access 'read write' + type BOOLEAN + count 1 + } + } + control.126 { + iface MIXER + name 'hf_out mix 0 voip_in' + value false + comment { + access 'read write' + type BOOLEAN + count 1 + } + } + control.127 { + iface MIXER + name 'hf_out mix 0 pcm0_in' + value false + comment { + access 'read write' + type BOOLEAN + count 1 + } + } + control.128 { + iface MIXER + name 'hf_out mix 0 pcm1_in' + value false + comment { + access 'read write' + type BOOLEAN + count 1 + } + } + control.129 { + iface MIXER + name 'hf_out mix 0 low_pcm0_in' + value false + comment { + access 'read write' + type BOOLEAN + count 1 + } + } + control.130 { + iface MIXER + name 'hf_out mix 0 fm_in' + value false + comment { + access 'read write' + type BOOLEAN + count 1 + } + } + control.131 { + iface MIXER + name 'hf_sns_out mix 0 modem_in' + value false + comment { + access 'read write' + type BOOLEAN + count 1 + } + } + control.132 { + iface MIXER + name 'hf_sns_out mix 0 bt_in' + value false + comment { + access 'read write' + type BOOLEAN + count 1 + } + } + control.133 { + iface MIXER + name 'hf_sns_out mix 0 codec_in0' + value false + comment { + access 'read write' + type BOOLEAN + count 1 + } + } + control.134 { + iface MIXER + name 'hf_sns_out mix 0 codec_in1' + value false + comment { + access 'read write' + type BOOLEAN + count 1 + } + } + control.135 { + iface MIXER + name 'hf_sns_out mix 0 sprot_loop_in' + value false + comment { + access 'read write' + type BOOLEAN + count 1 + } + } + control.136 { + iface MIXER + name 'hf_sns_out mix 0 media_loop1_in' + value false + comment { + access 'read write' + type BOOLEAN + count 1 + } + } + control.137 { + iface MIXER + name 'hf_sns_out mix 0 media_loop2_in' + value false + comment { + access 'read write' + type BOOLEAN + count 1 + } + } + control.138 { + iface MIXER + name 'hf_sns_out mix 0 sidetone_in' + value false + comment { + access 'read write' + type BOOLEAN + count 1 + } + } + control.139 { + iface MIXER + name 'hf_sns_out mix 0 txspeech_in' + value false + comment { + access 'read write' + type BOOLEAN + count 1 + } + } + control.140 { + iface MIXER + name 'hf_sns_out mix 0 speech_in' + value false + comment { + access 'read write' + type BOOLEAN + count 1 + } + } + control.141 { + iface MIXER + name 'hf_sns_out mix 0 tone_in' + value false + comment { + access 'read write' + type BOOLEAN + count 1 + } + } + control.142 { + iface MIXER + name 'hf_sns_out mix 0 voip_in' + value false + comment { + access 'read write' + type BOOLEAN + count 1 + } + } + control.143 { + iface MIXER + name 'hf_sns_out mix 0 pcm0_in' + value false + comment { + access 'read write' + type BOOLEAN + count 1 + } + } + control.144 { + iface MIXER + name 'hf_sns_out mix 0 pcm1_in' + value false + comment { + access 'read write' + type BOOLEAN + count 1 + } + } + control.145 { + iface MIXER + name 'hf_sns_out mix 0 low_pcm0_in' + value false + comment { + access 'read write' + type BOOLEAN + count 1 + } + } + control.146 { + iface MIXER + name 'hf_sns_out mix 0 fm_in' + value false + comment { + access 'read write' + type BOOLEAN + count 1 + } + } + control.147 { + iface MIXER + name 'vad_out mix 0 modem_in' + value false + comment { + access 'read write' + type BOOLEAN + count 1 + } + } + control.148 { + iface MIXER + name 'vad_out mix 0 bt_in' + value false + comment { + access 'read write' + type BOOLEAN + count 1 + } + } + control.149 { + iface MIXER + name 'vad_out mix 0 codec_in0' + value false + comment { + access 'read write' + type BOOLEAN + count 1 + } + } + control.150 { + iface MIXER + name 'vad_out mix 0 codec_in1' + value false + comment { + access 'read write' + type BOOLEAN + count 1 + } + } + control.151 { + iface MIXER + name 'vad_out mix 0 sprot_loop_in' + value false + comment { + access 'read write' + type BOOLEAN + count 1 + } + } + control.152 { + iface MIXER + name 'vad_out mix 0 media_loop1_in' + value false + comment { + access 'read write' + type BOOLEAN + count 1 + } + } + control.153 { + iface MIXER + name 'vad_out mix 0 media_loop2_in' + value false + comment { + access 'read write' + type BOOLEAN + count 1 + } + } + control.154 { + iface MIXER + name 'vad_out mix 0 sidetone_in' + value false + comment { + access 'read write' + type BOOLEAN + count 1 + } + } + control.155 { + iface MIXER + name 'vad_out mix 0 txspeech_in' + value false + comment { + access 'read write' + type BOOLEAN + count 1 + } + } + control.156 { + iface MIXER + name 'vad_out mix 0 speech_in' + value false + comment { + access 'read write' + type BOOLEAN + count 1 + } + } + control.157 { + iface MIXER + name 'vad_out mix 0 tone_in' + value false + comment { + access 'read write' + type BOOLEAN + count 1 + } + } + control.158 { + iface MIXER + name 'vad_out mix 0 voip_in' + value false + comment { + access 'read write' + type BOOLEAN + count 1 + } + } + control.159 { + iface MIXER + name 'vad_out mix 0 pcm0_in' + value false + comment { + access 'read write' + type BOOLEAN + count 1 + } + } + control.160 { + iface MIXER + name 'vad_out mix 0 pcm1_in' + value false + comment { + access 'read write' + type BOOLEAN + count 1 + } + } + control.161 { + iface MIXER + name 'vad_out mix 0 low_pcm0_in' + value false + comment { + access 'read write' + type BOOLEAN + count 1 + } + } + control.162 { + iface MIXER + name 'vad_out mix 0 fm_in' + value false + comment { + access 'read write' + type BOOLEAN + count 1 + } + } + control.163 { + iface MIXER + name 'aware_out mix 0 modem_in' + value false + comment { + access 'read write' + type BOOLEAN + count 1 + } + } + control.164 { + iface MIXER + name 'aware_out mix 0 bt_in' + value false + comment { + access 'read write' + type BOOLEAN + count 1 + } + } + control.165 { + iface MIXER + name 'aware_out mix 0 codec_in0' + value false + comment { + access 'read write' + type BOOLEAN + count 1 + } + } + control.166 { + iface MIXER + name 'aware_out mix 0 codec_in1' + value false + comment { + access 'read write' + type BOOLEAN + count 1 + } + } + control.167 { + iface MIXER + name 'aware_out mix 0 sprot_loop_in' + value false + comment { + access 'read write' + type BOOLEAN + count 1 + } + } + control.168 { + iface MIXER + name 'aware_out mix 0 media_loop1_in' + value false + comment { + access 'read write' + type BOOLEAN + count 1 + } + } + control.169 { + iface MIXER + name 'aware_out mix 0 media_loop2_in' + value false + comment { + access 'read write' + type BOOLEAN + count 1 + } + } + control.170 { + iface MIXER + name 'aware_out mix 0 sidetone_in' + value false + comment { + access 'read write' + type BOOLEAN + count 1 + } + } + control.171 { + iface MIXER + name 'aware_out mix 0 txspeech_in' + value false + comment { + access 'read write' + type BOOLEAN + count 1 + } + } + control.172 { + iface MIXER + name 'aware_out mix 0 speech_in' + value false + comment { + access 'read write' + type BOOLEAN + count 1 + } + } + control.173 { + iface MIXER + name 'aware_out mix 0 tone_in' + value false + comment { + access 'read write' + type BOOLEAN + count 1 + } + } + control.174 { + iface MIXER + name 'aware_out mix 0 voip_in' + value false + comment { + access 'read write' + type BOOLEAN + count 1 + } + } + control.175 { + iface MIXER + name 'aware_out mix 0 pcm0_in' + value false + comment { + access 'read write' + type BOOLEAN + count 1 + } + } + control.176 { + iface MIXER + name 'aware_out mix 0 pcm1_in' + value false + comment { + access 'read write' + type BOOLEAN + count 1 + } + } + control.177 { + iface MIXER + name 'aware_out mix 0 low_pcm0_in' + value false + comment { + access 'read write' + type BOOLEAN + count 1 + } + } + control.178 { + iface MIXER + name 'aware_out mix 0 fm_in' + value false + comment { + access 'read write' + type BOOLEAN + count 1 + } + } + control.179 { + iface MIXER + name 'voip_out mix 0 modem_in' + value false + comment { + access 'read write' + type BOOLEAN + count 1 + } + } + control.180 { + iface MIXER + name 'voip_out mix 0 bt_in' + value false + comment { + access 'read write' + type BOOLEAN + count 1 + } + } + control.181 { + iface MIXER + name 'voip_out mix 0 codec_in0' + value false + comment { + access 'read write' + type BOOLEAN + count 1 + } + } + control.182 { + iface MIXER + name 'voip_out mix 0 codec_in1' + value false + comment { + access 'read write' + type BOOLEAN + count 1 + } + } + control.183 { + iface MIXER + name 'voip_out mix 0 sprot_loop_in' + value false + comment { + access 'read write' + type BOOLEAN + count 1 + } + } + control.184 { + iface MIXER + name 'voip_out mix 0 media_loop1_in' + value false + comment { + access 'read write' + type BOOLEAN + count 1 + } + } + control.185 { + iface MIXER + name 'voip_out mix 0 media_loop2_in' + value false + comment { + access 'read write' + type BOOLEAN + count 1 + } + } + control.186 { + iface MIXER + name 'voip_out mix 0 sidetone_in' + value false + comment { + access 'read write' + type BOOLEAN + count 1 + } + } + control.187 { + iface MIXER + name 'voip_out mix 0 txspeech_in' + value false + comment { + access 'read write' + type BOOLEAN + count 1 + } + } + control.188 { + iface MIXER + name 'voip_out mix 0 speech_in' + value false + comment { + access 'read write' + type BOOLEAN + count 1 + } + } + control.189 { + iface MIXER + name 'voip_out mix 0 tone_in' + value false + comment { + access 'read write' + type BOOLEAN + count 1 + } + } + control.190 { + iface MIXER + name 'voip_out mix 0 voip_in' + value false + comment { + access 'read write' + type BOOLEAN + count 1 + } + } + control.191 { + iface MIXER + name 'voip_out mix 0 pcm0_in' + value false + comment { + access 'read write' + type BOOLEAN + count 1 + } + } + control.192 { + iface MIXER + name 'voip_out mix 0 pcm1_in' + value false + comment { + access 'read write' + type BOOLEAN + count 1 + } + } + control.193 { + iface MIXER + name 'voip_out mix 0 low_pcm0_in' + value false + comment { + access 'read write' + type BOOLEAN + count 1 + } + } + control.194 { + iface MIXER + name 'voip_out mix 0 fm_in' + value false + comment { + access 'read write' + type BOOLEAN + count 1 + } + } + control.195 { + iface MIXER + name 'media_loop2_out mix 0 modem_in' + value false + comment { + access 'read write' + type BOOLEAN + count 1 + } + } + control.196 { + iface MIXER + name 'media_loop2_out mix 0 bt_in' + value false + comment { + access 'read write' + type BOOLEAN + count 1 + } + } + control.197 { + iface MIXER + name 'media_loop2_out mix 0 codec_in0' + value true + comment { + access 'read write' + type BOOLEAN + count 1 + } + } + control.198 { + iface MIXER + name 'media_loop2_out mix 0 codec_in1' + value false + comment { + access 'read write' + type BOOLEAN + count 1 + } + } + control.199 { + iface MIXER + name 'media_loop2_out mix 0 sprot_loop_in' + value false + comment { + access 'read write' + type BOOLEAN + count 1 + } + } + control.200 { + iface MIXER + name 'media_loop2_out mix 0 media_loop1_in' + value false + comment { + access 'read write' + type BOOLEAN + count 1 + } + } + control.201 { + iface MIXER + name 'media_loop2_out mix 0 media_loop2_in' + value false + comment { + access 'read write' + type BOOLEAN + count 1 + } + } + control.202 { + iface MIXER + name 'media_loop2_out mix 0 sidetone_in' + value false + comment { + access 'read write' + type BOOLEAN + count 1 + } + } + control.203 { + iface MIXER + name 'media_loop2_out mix 0 txspeech_in' + value false + comment { + access 'read write' + type BOOLEAN + count 1 + } + } + control.204 { + iface MIXER + name 'media_loop2_out mix 0 speech_in' + value false + comment { + access 'read write' + type BOOLEAN + count 1 + } + } + control.205 { + iface MIXER + name 'media_loop2_out mix 0 tone_in' + value false + comment { + access 'read write' + type BOOLEAN + count 1 + } + } + control.206 { + iface MIXER + name 'media_loop2_out mix 0 voip_in' + value false + comment { + access 'read write' + type BOOLEAN + count 1 + } + } + control.207 { + iface MIXER + name 'media_loop2_out mix 0 pcm0_in' + value false + comment { + access 'read write' + type BOOLEAN + count 1 + } + } + control.208 { + iface MIXER + name 'media_loop2_out mix 0 pcm1_in' + value false + comment { + access 'read write' + type BOOLEAN + count 1 + } + } + control.209 { + iface MIXER + name 'media_loop2_out mix 0 low_pcm0_in' + value false + comment { + access 'read write' + type BOOLEAN + count 1 + } + } + control.210 { + iface MIXER + name 'media_loop2_out mix 0 fm_in' + value false + comment { + access 'read write' + type BOOLEAN + count 1 + } + } + control.211 { + iface MIXER + name 'media_loop1_out mix 0 modem_in' + value false + comment { + access 'read write' + type BOOLEAN + count 1 + } + } + control.212 { + iface MIXER + name 'media_loop1_out mix 0 bt_in' + value false + comment { + access 'read write' + type BOOLEAN + count 1 + } + } + control.213 { + iface MIXER + name 'media_loop1_out mix 0 codec_in0' + value false + comment { + access 'read write' + type BOOLEAN + count 1 + } + } + control.214 { + iface MIXER + name 'media_loop1_out mix 0 codec_in1' + value false + comment { + access 'read write' + type BOOLEAN + count 1 + } + } + control.215 { + iface MIXER + name 'media_loop1_out mix 0 sprot_loop_in' + value false + comment { + access 'read write' + type BOOLEAN + count 1 + } + } + control.216 { + iface MIXER + name 'media_loop1_out mix 0 media_loop1_in' + value false + comment { + access 'read write' + type BOOLEAN + count 1 + } + } + control.217 { + iface MIXER + name 'media_loop1_out mix 0 media_loop2_in' + value false + comment { + access 'read write' + type BOOLEAN + count 1 + } + } + control.218 { + iface MIXER + name 'media_loop1_out mix 0 sidetone_in' + value false + comment { + access 'read write' + type BOOLEAN + count 1 + } + } + control.219 { + iface MIXER + name 'media_loop1_out mix 0 txspeech_in' + value false + comment { + access 'read write' + type BOOLEAN + count 1 + } + } + control.220 { + iface MIXER + name 'media_loop1_out mix 0 speech_in' + value false + comment { + access 'read write' + type BOOLEAN + count 1 + } + } + control.221 { + iface MIXER + name 'media_loop1_out mix 0 tone_in' + value false + comment { + access 'read write' + type BOOLEAN + count 1 + } + } + control.222 { + iface MIXER + name 'media_loop1_out mix 0 voip_in' + value false + comment { + access 'read write' + type BOOLEAN + count 1 + } + } + control.223 { + iface MIXER + name 'media_loop1_out mix 0 pcm0_in' + value true + comment { + access 'read write' + type BOOLEAN + count 1 + } + } + control.224 { + iface MIXER + name 'media_loop1_out mix 0 pcm1_in' + value false + comment { + access 'read write' + type BOOLEAN + count 1 + } + } + control.225 { + iface MIXER + name 'media_loop1_out mix 0 low_pcm0_in' + value false + comment { + access 'read write' + type BOOLEAN + count 1 + } + } + control.226 { + iface MIXER + name 'media_loop1_out mix 0 fm_in' + value false + comment { + access 'read write' + type BOOLEAN + count 1 + } + } + control.227 { + iface MIXER + name 'sprot_loop_out mix 0 modem_in' + value false + comment { + access 'read write' + type BOOLEAN + count 1 + } + } + control.228 { + iface MIXER + name 'sprot_loop_out mix 0 bt_in' + value false + comment { + access 'read write' + type BOOLEAN + count 1 + } + } + control.229 { + iface MIXER + name 'sprot_loop_out mix 0 codec_in0' + value false + comment { + access 'read write' + type BOOLEAN + count 1 + } + } + control.230 { + iface MIXER + name 'sprot_loop_out mix 0 codec_in1' + value false + comment { + access 'read write' + type BOOLEAN + count 1 + } + } + control.231 { + iface MIXER + name 'sprot_loop_out mix 0 sprot_loop_in' + value false + comment { + access 'read write' + type BOOLEAN + count 1 + } + } + control.232 { + iface MIXER + name 'sprot_loop_out mix 0 media_loop1_in' + value true + comment { + access 'read write' + type BOOLEAN + count 1 + } + } + control.233 { + iface MIXER + name 'sprot_loop_out mix 0 media_loop2_in' + value false + comment { + access 'read write' + type BOOLEAN + count 1 + } + } + control.234 { + iface MIXER + name 'sprot_loop_out mix 0 sidetone_in' + value false + comment { + access 'read write' + type BOOLEAN + count 1 + } + } + control.235 { + iface MIXER + name 'sprot_loop_out mix 0 txspeech_in' + value false + comment { + access 'read write' + type BOOLEAN + count 1 + } + } + control.236 { + iface MIXER + name 'sprot_loop_out mix 0 speech_in' + value false + comment { + access 'read write' + type BOOLEAN + count 1 + } + } + control.237 { + iface MIXER + name 'sprot_loop_out mix 0 tone_in' + value false + comment { + access 'read write' + type BOOLEAN + count 1 + } + } + control.238 { + iface MIXER + name 'sprot_loop_out mix 0 voip_in' + value false + comment { + access 'read write' + type BOOLEAN + count 1 + } + } + control.239 { + iface MIXER + name 'sprot_loop_out mix 0 pcm0_in' + value false + comment { + access 'read write' + type BOOLEAN + count 1 + } + } + control.240 { + iface MIXER + name 'sprot_loop_out mix 0 pcm1_in' + value false + comment { + access 'read write' + type BOOLEAN + count 1 + } + } + control.241 { + iface MIXER + name 'sprot_loop_out mix 0 low_pcm0_in' + value false + comment { + access 'read write' + type BOOLEAN + count 1 + } + } + control.242 { + iface MIXER + name 'sprot_loop_out mix 0 fm_in' + value false + comment { + access 'read write' + type BOOLEAN + count 1 + } + } + control.243 { + iface MIXER + name 'pcm2_out mix 0 modem_in' + value false + comment { + access 'read write' + type BOOLEAN + count 1 + } + } + control.244 { + iface MIXER + name 'pcm2_out mix 0 bt_in' + value false + comment { + access 'read write' + type BOOLEAN + count 1 + } + } + control.245 { + iface MIXER + name 'pcm2_out mix 0 codec_in0' + value false + comment { + access 'read write' + type BOOLEAN + count 1 + } + } + control.246 { + iface MIXER + name 'pcm2_out mix 0 codec_in1' + value false + comment { + access 'read write' + type BOOLEAN + count 1 + } + } + control.247 { + iface MIXER + name 'pcm2_out mix 0 sprot_loop_in' + value false + comment { + access 'read write' + type BOOLEAN + count 1 + } + } + control.248 { + iface MIXER + name 'pcm2_out mix 0 media_loop1_in' + value false + comment { + access 'read write' + type BOOLEAN + count 1 + } + } + control.249 { + iface MIXER + name 'pcm2_out mix 0 media_loop2_in' + value false + comment { + access 'read write' + type BOOLEAN + count 1 + } + } + control.250 { + iface MIXER + name 'pcm2_out mix 0 sidetone_in' + value false + comment { + access 'read write' + type BOOLEAN + count 1 + } + } + control.251 { + iface MIXER + name 'pcm2_out mix 0 txspeech_in' + value false + comment { + access 'read write' + type BOOLEAN + count 1 + } + } + control.252 { + iface MIXER + name 'pcm2_out mix 0 speech_in' + value false + comment { + access 'read write' + type BOOLEAN + count 1 + } + } + control.253 { + iface MIXER + name 'pcm2_out mix 0 tone_in' + value false + comment { + access 'read write' + type BOOLEAN + count 1 + } + } + control.254 { + iface MIXER + name 'pcm2_out mix 0 voip_in' + value false + comment { + access 'read write' + type BOOLEAN + count 1 + } + } + control.255 { + iface MIXER + name 'pcm2_out mix 0 pcm0_in' + value false + comment { + access 'read write' + type BOOLEAN + count 1 + } + } + control.256 { + iface MIXER + name 'pcm2_out mix 0 pcm1_in' + value false + comment { + access 'read write' + type BOOLEAN + count 1 + } + } + control.257 { + iface MIXER + name 'pcm2_out mix 0 low_pcm0_in' + value false + comment { + access 'read write' + type BOOLEAN + count 1 + } + } + control.258 { + iface MIXER + name 'pcm2_out mix 0 fm_in' + value false + comment { + access 'read write' + type BOOLEAN + count 1 + } + } + control.259 { + iface MIXER + name 'pcm1_out mix 0 modem_in' + value false + comment { + access 'read write' + type BOOLEAN + count 1 + } + } + control.260 { + iface MIXER + name 'pcm1_out mix 0 bt_in' + value false + comment { + access 'read write' + type BOOLEAN + count 1 + } + } + control.261 { + iface MIXER + name 'pcm1_out mix 0 codec_in0' + value false + comment { + access 'read write' + type BOOLEAN + count 1 + } + } + control.262 { + iface MIXER + name 'pcm1_out mix 0 codec_in1' + value false + comment { + access 'read write' + type BOOLEAN + count 1 + } + } + control.263 { + iface MIXER + name 'pcm1_out mix 0 sprot_loop_in' + value false + comment { + access 'read write' + type BOOLEAN + count 1 + } + } + control.264 { + iface MIXER + name 'pcm1_out mix 0 media_loop1_in' + value false + comment { + access 'read write' + type BOOLEAN + count 1 + } + } + control.265 { + iface MIXER + name 'pcm1_out mix 0 media_loop2_in' + value true + comment { + access 'read write' + type BOOLEAN + count 1 + } + } + control.266 { + iface MIXER + name 'pcm1_out mix 0 sidetone_in' + value false + comment { + access 'read write' + type BOOLEAN + count 1 + } + } + control.267 { + iface MIXER + name 'pcm1_out mix 0 txspeech_in' + value false + comment { + access 'read write' + type BOOLEAN + count 1 + } + } + control.268 { + iface MIXER + name 'pcm1_out mix 0 speech_in' + value false + comment { + access 'read write' + type BOOLEAN + count 1 + } + } + control.269 { + iface MIXER + name 'pcm1_out mix 0 tone_in' + value false + comment { + access 'read write' + type BOOLEAN + count 1 + } + } + control.270 { + iface MIXER + name 'pcm1_out mix 0 voip_in' + value false + comment { + access 'read write' + type BOOLEAN + count 1 + } + } + control.271 { + iface MIXER + name 'pcm1_out mix 0 pcm0_in' + value false + comment { + access 'read write' + type BOOLEAN + count 1 + } + } + control.272 { + iface MIXER + name 'pcm1_out mix 0 pcm1_in' + value false + comment { + access 'read write' + type BOOLEAN + count 1 + } + } + control.273 { + iface MIXER + name 'pcm1_out mix 0 low_pcm0_in' + value false + comment { + access 'read write' + type BOOLEAN + count 1 + } + } + control.274 { + iface MIXER + name 'pcm1_out mix 0 fm_in' + value false + comment { + access 'read write' + type BOOLEAN + count 1 + } + } + control.275 { + iface MIXER + name 'pcm0_out mix 0 modem_in' + value false + comment { + access 'read write' + type BOOLEAN + count 1 + } + } + control.276 { + iface MIXER + name 'pcm0_out mix 0 bt_in' + value false + comment { + access 'read write' + type BOOLEAN + count 1 + } + } + control.277 { + iface MIXER + name 'pcm0_out mix 0 codec_in0' + value false + comment { + access 'read write' + type BOOLEAN + count 1 + } + } + control.278 { + iface MIXER + name 'pcm0_out mix 0 codec_in1' + value false + comment { + access 'read write' + type BOOLEAN + count 1 + } + } + control.279 { + iface MIXER + name 'pcm0_out mix 0 sprot_loop_in' + value false + comment { + access 'read write' + type BOOLEAN + count 1 + } + } + control.280 { + iface MIXER + name 'pcm0_out mix 0 media_loop1_in' + value false + comment { + access 'read write' + type BOOLEAN + count 1 + } + } + control.281 { + iface MIXER + name 'pcm0_out mix 0 media_loop2_in' + value false + comment { + access 'read write' + type BOOLEAN + count 1 + } + } + control.282 { + iface MIXER + name 'pcm0_out mix 0 sidetone_in' + value false + comment { + access 'read write' + type BOOLEAN + count 1 + } + } + control.283 { + iface MIXER + name 'pcm0_out mix 0 txspeech_in' + value false + comment { + access 'read write' + type BOOLEAN + count 1 + } + } + control.284 { + iface MIXER + name 'pcm0_out mix 0 speech_in' + value false + comment { + access 'read write' + type BOOLEAN + count 1 + } + } + control.285 { + iface MIXER + name 'pcm0_out mix 0 tone_in' + value false + comment { + access 'read write' + type BOOLEAN + count 1 + } + } + control.286 { + iface MIXER + name 'pcm0_out mix 0 voip_in' + value false + comment { + access 'read write' + type BOOLEAN + count 1 + } + } + control.287 { + iface MIXER + name 'pcm0_out mix 0 pcm0_in' + value false + comment { + access 'read write' + type BOOLEAN + count 1 + } + } + control.288 { + iface MIXER + name 'pcm0_out mix 0 pcm1_in' + value false + comment { + access 'read write' + type BOOLEAN + count 1 + } + } + control.289 { + iface MIXER + name 'pcm0_out mix 0 low_pcm0_in' + value false + comment { + access 'read write' + type BOOLEAN + count 1 + } + } + control.290 { + iface MIXER + name 'pcm0_out mix 0 fm_in' + value false + comment { + access 'read write' + type BOOLEAN + count 1 + } + } + control.291 { + iface MIXER + name 'media1_out mix 0 media0_in' + value false + comment { + access 'read write' + type BOOLEAN + count 1 + } + } + control.292 { + iface MIXER + name 'media1_out mix 0 media1_in' + value false + comment { + access 'read write' + type BOOLEAN + count 1 + } + } + control.293 { + iface MIXER + name 'media1_out mix 0 media2_in' + value false + comment { + access 'read write' + type BOOLEAN + count 1 + } + } + control.294 { + iface MIXER + name 'media1_out mix 0 media3_in' + value false + comment { + access 'read write' + type BOOLEAN + count 1 + } + } + control.295 { + iface MIXER + name 'media0_out mix 0 media0_in' + value false + comment { + access 'read write' + type BOOLEAN + count 1 + } + } + control.296 { + iface MIXER + name 'media0_out mix 0 media1_in' + value true + comment { + access 'read write' + type BOOLEAN + count 1 + } + } + control.297 { + iface MIXER + name 'media0_out mix 0 media2_in' + value false + comment { + access 'read write' + type BOOLEAN + count 1 + } + } + control.298 { + iface MIXER + name 'media0_out mix 0 media3_in' + value false + comment { + access 'read write' + type BOOLEAN + count 1 + } + } + control.299 { + iface MIXER + name 'media0_in gain 0 rampduration' + value 5 + comment { + access 'read write' + type INTEGER + count 1 + range '5 - 5000' + } + } + control.300 { + iface MIXER + name 'media0_in gain 0 mute' + value true + comment { + access 'read write' + type BOOLEAN + count 1 + } + } + control.301 { + iface MIXER + name 'media0_in gain 0 volume' + value.0 -1440 + value.1 -1440 + comment { + access 'read write' + type INTEGER + count 2 + range '-1440 - 360' + dbmin -14400 + dbmax 3600 + dbvalue.0 -14400 + dbvalue.1 -14400 + } + } + control.302 { + iface MIXER + name 'media1_in gain 0 rampduration' + value 50 + comment { + access 'read write' + type INTEGER + count 1 + range '5 - 5000' + } + } + control.303 { + iface MIXER + name 'media1_in gain 0 mute' + value false + comment { + access 'read write' + type BOOLEAN + count 1 + } + } + control.304 { + iface MIXER + name 'media1_in gain 0 volume' + value.0 0 + value.1 0 + comment { + access 'read write' + type INTEGER + count 2 + range '-1440 - 360' + dbmin -14400 + dbmax 3600 + dbvalue.0 0 + dbvalue.1 0 + } + } + control.305 { + iface MIXER + name 'media2_in gain 0 rampduration' + value 5 + comment { + access 'read write' + type INTEGER + count 1 + range '5 - 5000' + } + } + control.306 { + iface MIXER + name 'media2_in gain 0 mute' + value true + comment { + access 'read write' + type BOOLEAN + count 1 + } + } + control.307 { + iface MIXER + name 'media2_in gain 0 volume' + value.0 -1440 + value.1 -1440 + comment { + access 'read write' + type INTEGER + count 2 + range '-1440 - 360' + dbmin -14400 + dbmax 3600 + dbvalue.0 -14400 + dbvalue.1 -14400 + } + } + control.308 { + iface MIXER + name 'media3_in gain 0 rampduration' + value 5 + comment { + access 'read write' + type INTEGER + count 1 + range '5 - 5000' + } + } + control.309 { + iface MIXER + name 'media3_in gain 0 mute' + value true + comment { + access 'read write' + type BOOLEAN + count 1 + } + } + control.310 { + iface MIXER + name 'media3_in gain 0 volume' + value.0 -1440 + value.1 -1440 + comment { + access 'read write' + type INTEGER + count 2 + range '-1440 - 360' + dbmin -14400 + dbmax 3600 + dbvalue.0 -14400 + dbvalue.1 -14400 + } + } + control.311 { + iface MIXER + name 'pcm0_in gain 0 rampduration' + value 50 + comment { + access 'read write' + type INTEGER + count 1 + range '5 - 5000' + } + } + control.312 { + iface MIXER + name 'pcm0_in gain 0 mute' + value false + comment { + access 'read write' + type BOOLEAN + count 1 + } + } + control.313 { + iface MIXER + name 'pcm0_in gain 0 volume' + value.0 0 + value.1 0 + comment { + access 'read write' + type INTEGER + count 2 + range '-1440 - 360' + dbmin -14400 + dbmax 3600 + dbvalue.0 0 + dbvalue.1 0 + } + } + control.314 { + iface MIXER + name 'pcm1_in gain 0 rampduration' + value 5 + comment { + access 'read write' + type INTEGER + count 1 + range '5 - 5000' + } + } + control.315 { + iface MIXER + name 'pcm1_in gain 0 mute' + value true + comment { + access 'read write' + type BOOLEAN + count 1 + } + } + control.316 { + iface MIXER + name 'pcm1_in gain 0 volume' + value.0 -1440 + value.1 -1440 + comment { + access 'read write' + type INTEGER + count 2 + range '-1440 - 360' + dbmin -14400 + dbmax 3600 + dbvalue.0 -14400 + dbvalue.1 -14400 + } + } + control.317 { + iface MIXER + name 'low_pcm0_in gain 0 rampduration' + value 5 + comment { + access 'read write' + type INTEGER + count 1 + range '5 - 5000' + } + } + control.318 { + iface MIXER + name 'low_pcm0_in gain 0 mute' + value true + comment { + access 'read write' + type BOOLEAN + count 1 + } + } + control.319 { + iface MIXER + name 'low_pcm0_in gain 0 volume' + value.0 -1440 + value.1 -1440 + comment { + access 'read write' + type INTEGER + count 2 + range '-1440 - 360' + dbmin -14400 + dbmax 3600 + dbvalue.0 -14400 + dbvalue.1 -14400 + } + } + control.320 { + iface MIXER + name 'pcm1_out gain 0 rampduration' + value 50 + comment { + access 'read write' + type INTEGER + count 1 + range '5 - 5000' + } + } + control.321 { + iface MIXER + name 'pcm1_out gain 0 mute' + value false + comment { + access 'read write' + type BOOLEAN + count 1 + } + } + control.322 { + iface MIXER + name 'pcm1_out gain 0 volume' + value.0 0 + value.1 0 + comment { + access 'read write' + type INTEGER + count 2 + range '-1440 - 360' + dbmin -14400 + dbmax 3600 + dbvalue.0 0 + dbvalue.1 0 + } + } + control.323 { + iface MIXER + name 'pcm2_out gain 0 rampduration' + value 5 + comment { + access 'read write' + type INTEGER + count 1 + range '5 - 5000' + } + } + control.324 { + iface MIXER + name 'pcm2_out gain 0 mute' + value true + comment { + access 'read write' + type BOOLEAN + count 1 + } + } + control.325 { + iface MIXER + name 'pcm2_out gain 0 volume' + value.0 -1440 + value.1 -1440 + comment { + access 'read write' + type INTEGER + count 2 + range '-1440 - 360' + dbmin -14400 + dbmax 3600 + dbvalue.0 -14400 + dbvalue.1 -14400 + } + } + control.326 { + iface MIXER + name 'voip_in gain 0 rampduration' + value 5 + comment { + access 'read write' + type INTEGER + count 1 + range '5 - 5000' + } + } + control.327 { + iface MIXER + name 'voip_in gain 0 mute' + value true + comment { + access 'read write' + type BOOLEAN + count 1 + } + } + control.328 { + iface MIXER + name 'voip_in gain 0 volume' + value.0 -1440 + value.1 -1440 + comment { + access 'read write' + type INTEGER + count 2 + range '-1440 - 360' + dbmin -14400 + dbmax 3600 + dbvalue.0 -14400 + dbvalue.1 -14400 + } + } + control.329 { + iface MIXER + name 'voip_out gain 0 rampduration' + value 5 + comment { + access 'read write' + type INTEGER + count 1 + range '5 - 5000' + } + } + control.330 { + iface MIXER + name 'voip_out gain 0 mute' + value true + comment { + access 'read write' + type BOOLEAN + count 1 + } + } + control.331 { + iface MIXER + name 'voip_out gain 0 volume' + value.0 -1440 + value.1 -1440 + comment { + access 'read write' + type INTEGER + count 2 + range '-1440 - 360' + dbmin -14400 + dbmax 3600 + dbvalue.0 -14400 + dbvalue.1 -14400 + } + } + control.332 { + iface MIXER + name 'tone_in gain 0 rampduration' + value 5 + comment { + access 'read write' + type INTEGER + count 1 + range '5 - 5000' + } + } + control.333 { + iface MIXER + name 'tone_in gain 0 mute' + value true + comment { + access 'read write' + type BOOLEAN + count 1 + } + } + control.334 { + iface MIXER + name 'tone_in gain 0 volume' + value.0 -1440 + value.1 -1440 + comment { + access 'read write' + type INTEGER + count 2 + range '-1440 - 360' + dbmin -14400 + dbmax 3600 + dbvalue.0 -14400 + dbvalue.1 -14400 + } + } + control.335 { + iface MIXER + name 'aware_out gain 0 rampduration' + value 5 + comment { + access 'read write' + type INTEGER + count 1 + range '5 - 5000' + } + } + control.336 { + iface MIXER + name 'aware_out gain 0 mute' + value true + comment { + access 'read write' + type BOOLEAN + count 1 + } + } + control.337 { + iface MIXER + name 'aware_out gain 0 volume' + value.0 -1440 + value.1 -1440 + comment { + access 'read write' + type INTEGER + count 2 + range '-1440 - 360' + dbmin -14400 + dbmax 3600 + dbvalue.0 -14400 + dbvalue.1 -14400 + } + } + control.338 { + iface MIXER + name 'vad_out gain 0 rampduration' + value 5 + comment { + access 'read write' + type INTEGER + count 1 + range '5 - 5000' + } + } + control.339 { + iface MIXER + name 'vad_out gain 0 mute' + value true + comment { + access 'read write' + type BOOLEAN + count 1 + } + } + control.340 { + iface MIXER + name 'vad_out gain 0 volume' + value.0 -1440 + value.1 -1440 + comment { + access 'read write' + type INTEGER + count 2 + range '-1440 - 360' + dbmin -14400 + dbmax 3600 + dbvalue.0 -14400 + dbvalue.1 -14400 + } + } + control.341 { + iface MIXER + name 'hf_sns_out gain 0 rampduration' + value 5 + comment { + access 'read write' + type INTEGER + count 1 + range '5 - 5000' + } + } + control.342 { + iface MIXER + name 'hf_sns_out gain 0 mute' + value true + comment { + access 'read write' + type BOOLEAN + count 1 + } + } + control.343 { + iface MIXER + name 'hf_sns_out gain 0 volume' + value.0 -1440 + value.1 -1440 + comment { + access 'read write' + type INTEGER + count 2 + range '-1440 - 360' + dbmin -14400 + dbmax 3600 + dbvalue.0 -14400 + dbvalue.1 -14400 + } + } + control.344 { + iface MIXER + name 'hf_out gain 0 rampduration' + value 5 + comment { + access 'read write' + type INTEGER + count 1 + range '5 - 5000' + } + } + control.345 { + iface MIXER + name 'hf_out gain 0 mute' + value true + comment { + access 'read write' + type BOOLEAN + count 1 + } + } + control.346 { + iface MIXER + name 'hf_out gain 0 volume' + value.0 -1440 + value.1 -1440 + comment { + access 'read write' + type INTEGER + count 2 + range '-1440 - 360' + dbmin -14400 + dbmax 3600 + dbvalue.0 -14400 + dbvalue.1 -14400 + } + } + control.347 { + iface MIXER + name 'speech_out gain 0 rampduration' + value 5 + comment { + access 'read write' + type INTEGER + count 1 + range '5 - 5000' + } + } + control.348 { + iface MIXER + name 'speech_out gain 0 mute' + value true + comment { + access 'read write' + type BOOLEAN + count 1 + } + } + control.349 { + iface MIXER + name 'speech_out gain 0 volume' + value.0 -1440 + value.1 -1440 + comment { + access 'read write' + type INTEGER + count 2 + range '-1440 - 360' + dbmin -14400 + dbmax 3600 + dbvalue.0 -14400 + dbvalue.1 -14400 + } + } + control.350 { + iface MIXER + name 'txspeech_in gain 0 rampduration' + value 5 + comment { + access 'read write' + type INTEGER + count 1 + range '5 - 5000' + } + } + control.351 { + iface MIXER + name 'txspeech_in gain 0 mute' + value true + comment { + access 'read write' + type BOOLEAN + count 1 + } + } + control.352 { + iface MIXER + name 'txspeech_in gain 0 volume' + value.0 -1440 + value.1 -1440 + comment { + access 'read write' + type INTEGER + count 2 + range '-1440 - 360' + dbmin -14400 + dbmax 3600 + dbvalue.0 -14400 + dbvalue.1 -14400 + } + } + control.353 { + iface MIXER + name 'rxspeech_out gain 0 rampduration' + value 5 + comment { + access 'read write' + type INTEGER + count 1 + range '5 - 5000' + } + } + control.354 { + iface MIXER + name 'rxspeech_out gain 0 mute' + value true + comment { + access 'read write' + type BOOLEAN + count 1 + } + } + control.355 { + iface MIXER + name 'rxspeech_out gain 0 volume' + value.0 -1440 + value.1 -1440 + comment { + access 'read write' + type INTEGER + count 2 + range '-1440 - 360' + dbmin -14400 + dbmax 3600 + dbvalue.0 -14400 + dbvalue.1 -14400 + } + } + control.356 { + iface MIXER + name 'speech_in gain 0 rampduration' + value 5 + comment { + access 'read write' + type INTEGER + count 1 + range '5 - 5000' + } + } + control.357 { + iface MIXER + name 'speech_in gain 0 mute' + value true + comment { + access 'read write' + type BOOLEAN + count 1 + } + } + control.358 { + iface MIXER + name 'speech_in gain 0 volume' + value.0 -1440 + value.1 -1440 + comment { + access 'read write' + type INTEGER + count 2 + range '-1440 - 360' + dbmin -14400 + dbmax 3600 + dbvalue.0 -14400 + dbvalue.1 -14400 + } + } + control.359 { + iface MIXER + name 'codec_in0 gain 0 rampduration' + value 50 + comment { + access 'read write' + type INTEGER + count 1 + range '5 - 5000' + } + } + control.360 { + iface MIXER + name 'codec_in0 gain 0 mute' + value false + comment { + access 'read write' + type BOOLEAN + count 1 + } + } + control.361 { + iface MIXER + name 'codec_in0 gain 0 volume' + value.0 0 + value.1 0 + comment { + access 'read write' + type INTEGER + count 2 + range '-1440 - 360' + dbmin -14400 + dbmax 3600 + dbvalue.0 0 + dbvalue.1 0 + } + } + control.362 { + iface MIXER + name 'codec_in1 gain 0 rampduration' + value 5 + comment { + access 'read write' + type INTEGER + count 1 + range '5 - 5000' + } + } + control.363 { + iface MIXER + name 'codec_in1 gain 0 mute' + value true + comment { + access 'read write' + type BOOLEAN + count 1 + } + } + control.364 { + iface MIXER + name 'codec_in1 gain 0 volume' + value.0 -1440 + value.1 -1440 + comment { + access 'read write' + type INTEGER + count 2 + range '-1440 - 360' + dbmin -14400 + dbmax 3600 + dbvalue.0 -14400 + dbvalue.1 -14400 + } + } + control.365 { + iface MIXER + name 'codec_out0 gain 0 rampduration' + value 50 + comment { + access 'read write' + type INTEGER + count 1 + range '5 - 5000' + } + } + control.366 { + iface MIXER + name 'codec_out0 gain 0 mute' + value false + comment { + access 'read write' + type BOOLEAN + count 1 + } + } + control.367 { + iface MIXER + name 'codec_out0 gain 0 volume' + value.0 0 + value.1 0 + comment { + access 'read write' + type INTEGER + count 2 + range '-1440 - 360' + dbmin -14400 + dbmax 3600 + dbvalue.0 0 + dbvalue.1 0 + } + } + control.368 { + iface MIXER + name 'codec_out1 gain 0 rampduration' + value 5 + comment { + access 'read write' + type INTEGER + count 1 + range '5 - 5000' + } + } + control.369 { + iface MIXER + name 'codec_out1 gain 0 mute' + value true + comment { + access 'read write' + type BOOLEAN + count 1 + } + } + control.370 { + iface MIXER + name 'codec_out1 gain 0 volume' + value.0 -1440 + value.1 -1440 + comment { + access 'read write' + type INTEGER + count 2 + range '-1440 - 360' + dbmin -14400 + dbmax 3600 + dbvalue.0 -14400 + dbvalue.1 -14400 + } + } + control.371 { + iface MIXER + name 'bt_out gain 0 rampduration' + value 5 + comment { + access 'read write' + type INTEGER + count 1 + range '5 - 5000' + } + } + control.372 { + iface MIXER + name 'bt_out gain 0 mute' + value true + comment { + access 'read write' + type BOOLEAN + count 1 + } + } + control.373 { + iface MIXER + name 'bt_out gain 0 volume' + value.0 -1440 + value.1 -1440 + comment { + access 'read write' + type INTEGER + count 2 + range '-1440 - 360' + dbmin -14400 + dbmax 3600 + dbvalue.0 -14400 + dbvalue.1 -14400 + } + } + control.374 { + iface MIXER + name 'fm_out gain 0 rampduration' + value 5 + comment { + access 'read write' + type INTEGER + count 1 + range '5 - 5000' + } + } + control.375 { + iface MIXER + name 'fm_out gain 0 mute' + value true + comment { + access 'read write' + type BOOLEAN + count 1 + } + } + control.376 { + iface MIXER + name 'fm_out gain 0 volume' + value.0 -1440 + value.1 -1440 + comment { + access 'read write' + type INTEGER + count 2 + range '-1440 - 360' + dbmin -14400 + dbmax 3600 + dbvalue.0 -14400 + dbvalue.1 -14400 + } + } + control.377 { + iface MIXER + name 'bt_in gain 0 rampduration' + value 5 + comment { + access 'read write' + type INTEGER + count 1 + range '5 - 5000' + } + } + control.378 { + iface MIXER + name 'bt_in gain 0 mute' + value true + comment { + access 'read write' + type BOOLEAN + count 1 + } + } + control.379 { + iface MIXER + name 'bt_in gain 0 volume' + value.0 -1440 + value.1 -1440 + comment { + access 'read write' + type INTEGER + count 2 + range '-1440 - 360' + dbmin -14400 + dbmax 3600 + dbvalue.0 -14400 + dbvalue.1 -14400 + } + } + control.380 { + iface MIXER + name 'fm_in gain 0 rampduration' + value 5 + comment { + access 'read write' + type INTEGER + count 1 + range '5 - 5000' + } + } + control.381 { + iface MIXER + name 'fm_in gain 0 mute' + value true + comment { + access 'read write' + type BOOLEAN + count 1 + } + } + control.382 { + iface MIXER + name 'fm_in gain 0 volume' + value.0 -1440 + value.1 -1440 + comment { + access 'read write' + type INTEGER + count 2 + range '-1440 - 360' + dbmin -14400 + dbmax 3600 + dbvalue.0 -14400 + dbvalue.1 -14400 + } + } + control.383 { + iface MIXER + name 'modem_in gain 0 rampduration' + value 5 + comment { + access 'read write' + type INTEGER + count 1 + range '5 - 5000' + } + } + control.384 { + iface MIXER + name 'modem_in gain 0 mute' + value true + comment { + access 'read write' + type BOOLEAN + count 1 + } + } + control.385 { + iface MIXER + name 'modem_in gain 0 volume' + value.0 -1440 + value.1 -1440 + comment { + access 'read write' + type INTEGER + count 2 + range '-1440 - 360' + dbmin -14400 + dbmax 3600 + dbvalue.0 -14400 + dbvalue.1 -14400 + } + } + control.386 { + iface MIXER + name 'modem_out gain 0 rampduration' + value 5 + comment { + access 'read write' + type INTEGER + count 1 + range '5 - 5000' + } + } + control.387 { + iface MIXER + name 'modem_out gain 0 mute' + value true + comment { + access 'read write' + type BOOLEAN + count 1 + } + } + control.388 { + iface MIXER + name 'modem_out gain 0 volume' + value.0 -1440 + value.1 -1440 + comment { + access 'read write' + type INTEGER + count 2 + range '-1440 - 360' + dbmin -14400 + dbmax 3600 + dbvalue.0 -14400 + dbvalue.1 -14400 + } + } + control.389 { + iface MIXER + name 'media_loop1_out gain 0 rampduration' + value 50 + comment { + access 'read write' + type INTEGER + count 1 + range '5 - 5000' + } + } + control.390 { + iface MIXER + name 'media_loop1_out gain 0 mute' + value false + comment { + access 'read write' + type BOOLEAN + count 1 + } + } + control.391 { + iface MIXER + name 'media_loop1_out gain 0 volume' + value.0 0 + value.1 0 + comment { + access 'read write' + type INTEGER + count 2 + range '-1440 - 360' + dbmin -14400 + dbmax 3600 + dbvalue.0 0 + dbvalue.1 0 + } + } + control.392 { + iface MIXER + name 'media_loop2_out gain 0 rampduration' + value 50 + comment { + access 'read write' + type INTEGER + count 1 + range '5 - 5000' + } + } + control.393 { + iface MIXER + name 'media_loop2_out gain 0 mute' + value false + comment { + access 'read write' + type BOOLEAN + count 1 + } + } + control.394 { + iface MIXER + name 'media_loop2_out gain 0 volume' + value.0 0 + value.1 0 + comment { + access 'read write' + type INTEGER + count 2 + range '-1440 - 360' + dbmin -14400 + dbmax 3600 + dbvalue.0 0 + dbvalue.1 0 + } + } + control.395 { + iface MIXER + name 'sprot_loop_out gain 0 rampduration' + value 50 + comment { + access 'read write' + type INTEGER + count 1 + range '5 - 5000' + } + } + control.396 { + iface MIXER + name 'sprot_loop_out gain 0 mute' + value false + comment { + access 'read write' + type BOOLEAN + count 1 + } + } + control.397 { + iface MIXER + name 'sprot_loop_out gain 0 volume' + value.0 0 + value.1 0 + comment { + access 'read write' + type INTEGER + count 2 + range '-1440 - 360' + dbmin -14400 + dbmax 3600 + dbvalue.0 0 + dbvalue.1 0 + } + } + control.398 { + iface MIXER + name 'media0_in volume 0 rampduration' + value 5 + comment { + access 'read write' + type INTEGER + count 1 + range '5 - 5000' + } + } + control.399 { + iface MIXER + name 'media0_in volume 0 mute' + value true + comment { + access 'read write' + type BOOLEAN + count 1 + } + } + control.400 { + iface MIXER + name 'media0_in volume 0 volume' + value.0 -1440 + value.1 -1440 + comment { + access 'read write' + type INTEGER + count 2 + range '-1440 - 360' + dbmin -14400 + dbmax 3600 + dbvalue.0 -14400 + dbvalue.1 -14400 + } + } + control.401 { + iface MIXER + name 'sidetone_in gain 0 rampduration' + value 5 + comment { + access 'read write' + type INTEGER + count 1 + range '5 - 5000' + } + } + control.402 { + iface MIXER + name 'sidetone_in gain 0 mute' + value true + comment { + access 'read write' + type BOOLEAN + count 1 + } + } + control.403 { + iface MIXER + name 'sidetone_in gain 0 volume' + value.0 -1440 + value.1 -1440 + comment { + access 'read write' + type INTEGER + count 2 + range '-1440 - 360' + dbmin -14400 + dbmax 3600 + dbvalue.0 -14400 + dbvalue.1 -14400 + } + } + control.404 { + iface MIXER + name 'speech_out gain 1 rampduration' + value 5 + comment { + access 'read write' + type INTEGER + count 1 + range '5 - 5000' + } + } + control.405 { + iface MIXER + name 'speech_out gain 1 mute' + value true + comment { + access 'read write' + type BOOLEAN + count 1 + } + } + control.406 { + iface MIXER + name 'speech_out gain 1 volume' + value.0 -1440 + value.1 -1440 + comment { + access 'read write' + type INTEGER + count 2 + range '-1440 - 360' + dbmin -14400 + dbmax 3600 + dbvalue.0 -14400 + dbvalue.1 -14400 + } + } + control.407 { + iface MIXER + name 'media_loop1_out fir 0 params' + value '8a0003000100400000000000150014001400130011000e0009000000f3ffe0ffc8ffa8ff81ff52ff1bffddfe97fe4afef8fda1fd47fdecfc92fc3afce7fb9afb56fb1bfbecfac9fab4fa707ab4fac9faecfa1bfb56fb9afbe7fb3afc92fcecfc47fda1fdf8fd4afe97feddfe1bff52ff81ffa8ffc8ffe0fff3ff000009000e0000000000000000000000' + comment { + access 'read write' + type BYTES + count 138 + } + } + control.408 { + iface MIXER + name 'media_loop1_out iir 0 params' + value '98000300010001005a5aefcdd0ca5c8c2e74006f573a0022518b006f573a000100005a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000' + comment { + access 'read write' + type BYTES + count 300 + } + } + control.409 { + iface MIXER + name 'media_loop1_out mdrp 0 params' + value '4c00030000000100010000000000000000000000000000000000000000000000000000500000003c000000060000001900000001000058020000000100001400000014000000400000000001' + comment { + access 'read write' + type BYTES + count 76 + } + } + control.410 { + iface MIXER + name 'media_loop2_out fir 0 params' + value '100103000300400000000000fcffeaffdeffc6ffbbffa7ffa5ffa3ffb9ffc3ffdcffdcfff2ffeffffbffeaff150014001a00e5ff1800990083013900ddfda1fe51066209460c6e01a204de40a2046e01460c62095106a1feddfd3900830199001800e5ff1a0014001500eafffbffeffff2ffdcffdcffc3ffb9ffa3ffa5ffa7ff000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000' + comment { + access 'read write' + type BYTES + count 272 + } + } + control.411 { + iface MIXER + name 'media_loop2_out iir 0 params' + value '2c010300030001005a5aefcdd0ca5c8c2e74006f573a0022518b006f573a1f0000005a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000' + comment { + access 'read write' + type BYTES + count 300 + } + } + control.412 { + iface MIXER + name 'media_loop2_out mdrp 0 params' + value '00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000' + comment { + access 'read write' + type BYTES + count 76 + } + } + control.413 { + iface MIXER + name 'aware_out fir 0 params' + value '0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000' + comment { + access 'read write' + type BYTES + count 272 + } + } + control.414 { + iface MIXER + name 'aware_out iir 0 params' + value '000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000' + comment { + access 'read write' + type BYTES + count 300 + } + } + control.415 { + iface MIXER + name 'aware_out aware 0 params' + value '000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000' + comment { + access 'read write' + type BYTES + count 48 + } + } + control.416 { + iface MIXER + name 'vad_out fir 0 params' + value '0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000' + comment { + access 'read write' + type BYTES + count 272 + } + } + control.417 { + iface MIXER + name 'vad_out iir 0 params' + value '000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000' + comment { + access 'read write' + type BYTES + count 300 + } + } + control.418 { + iface MIXER + name 'sprot_loop_out lpro 0 params' + value '000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000' + comment { + access 'read write' + type BYTES + count 192 + } + } + control.419 { + iface MIXER + name 'codec_in0 dcr 0 params' + value '000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000' + comment { + access 'read write' + type BYTES + count 300 + } + } + control.420 { + iface MIXER + name 'codec_in1 dcr 0 params' + value '000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000' + comment { + access 'read write' + type BYTES + count 300 + } + } + control.421 { + iface MIXER + name 'speech_out ul_module 0 params fir_speech' + value '00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000' + comment { + access 'read write' + type BYTES + count 136 + } + } + control.422 { + iface MIXER + name 'speech_out ul_module 0 params fir_hf_sns' + value '00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000' + comment { + access 'read write' + type BYTES + count 136 + } + } + control.423 { + iface MIXER + name 'speech_out ul_module 0 params iir_speech' + value '000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000' + comment { + access 'read write' + type BYTES + count 48 + } + } + control.424 { + iface MIXER + name 'speech_out ul_module 0 params iir_hf_sns' + value '000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000' + comment { + access 'read write' + type BYTES + count 48 + } + } + control.425 { + iface MIXER + name 'speech_out ul_module 0 params aec' + value '00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000' + comment { + access 'read write' + type BYTES + count 640 + } + } + control.426 { + iface MIXER + name 'speech_out ul_module 0 params nr' + value '0000000000000000000000000000000000000000000000000000000000000000000000000000' + comment { + access 'read write' + type BYTES + count 38 + } + } + control.427 { + iface MIXER + name 'speech_out ul_module 0 params agc' + value '00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000' + comment { + access 'read write' + type BYTES + count 58 + } + } + control.428 { + iface MIXER + name 'speech_out ul_module 0 params biquad' + value '00000000000000000000000000000000000000000000' + comment { + access 'read write' + type BYTES + count 22 + } + } + control.429 { + iface MIXER + name 'speech_out ul_module 0 params compr' + value '000000000000000000000000000000000000000000000000000000000000000000000000' + comment { + access 'read write' + type BYTES + count 36 + } + } + control.430 { + iface MIXER + name 'speech_out ul_module 0 params sns' + value '000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000' + comment { + access 'read write' + type BYTES + count 324 + } + } + control.431 { + iface MIXER + name 'speech_out ul_module 0 params ser' + value '000000000000000000000000000000000000000000000000000000000000000000000000000000000000' + comment { + access 'read write' + type BYTES + count 42 + } + } + control.432 { + iface MIXER + name 'speech_out ul_module 0 params cni' + value '000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000' + comment { + access 'read write' + type BYTES + count 48 + } + } + control.433 { + iface MIXER + name 'speech_out ul_module 0 params ref' + value '000000000000000000000000000000000000000000000000' + comment { + access 'read write' + type BYTES + count 24 + } + } + control.434 { + iface MIXER + name 'speech_out ul_module 0 params delay' + value '000000000000' + comment { + access 'read write' + type BYTES + count 6 + } + } + control.435 { + iface MIXER + name 'speech_out ul_module 0 params bmf' + value '000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000' + comment { + access 'read write' + type BYTES + count 264 + } + } + control.436 { + iface MIXER + name 'speech_out ul_module 0 params dnr' + value '000000000000000000000000000000000000' + comment { + access 'read write' + type BYTES + count 18 + } + } + control.437 { + iface MIXER + name 'speech_in dl_module 0 params ana' + value '00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000' + comment { + access 'read write' + type BYTES + count 52 + } + } + control.438 { + iface MIXER + name 'speech_in dl_module 0 params fir' + value '00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000' + comment { + access 'read write' + type BYTES + count 136 + } + } + control.439 { + iface MIXER + name 'speech_in dl_module 0 params iir' + value '000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000' + comment { + access 'read write' + type BYTES + count 48 + } + } + control.440 { + iface MIXER + name 'speech_in dl_module 0 params nr' + value '0000000000000000000000000000000000000000000000000000000000000000000000000000' + comment { + access 'read write' + type BYTES + count 38 + } + } + control.441 { + iface MIXER + name 'speech_in dl_module 0 params biquad' + value '00000000000000000000000000000000000000000000' + comment { + access 'read write' + type BYTES + count 22 + } + } + control.442 { + iface MIXER + name 'speech_in dl_module 0 params compr' + value '000000000000000000000000000000000000000000000000000000000000000000000000' + comment { + access 'read write' + type BYTES + count 36 + } + } + control.443 { + iface MIXER + name 'speech_in dl_module 0 params cni' + value '000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000' + comment { + access 'read write' + type BYTES + count 48 + } + } + control.444 { + iface MIXER + name 'speech_in dl_module 0 params bwx' + value '000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000' + comment { + access 'read write' + type BYTES + count 54 + } + } + control.445 { + iface MIXER + name 'speech_in dl_module 0 params gmm' + value '00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000' + comment { + access 'read write' + type BYTES + count 586 + } + } + control.446 { + iface MIXER + name 'speech_in dl_module 0 params glc' + value '000000000000000000000000000000000000' + comment { + access 'read write' + type BYTES + count 18 + } + } + control.447 { + iface MIXER + name 'codec_out interleaver slot 0' + value codec_out0_0 + comment { + access 'read write' + type ENUMERATED + count 1 + item.0 none + item.1 codec_out0_0 + item.2 codec_out0_1 + item.3 codec_out1_0 + item.4 codec_out1_1 + } + } + control.448 { + iface MIXER + name 'codec_out interleaver slot 1' + value codec_out0_1 + comment { + access 'read write' + type ENUMERATED + count 1 + item.0 none + item.1 codec_out0_0 + item.2 codec_out0_1 + item.3 codec_out1_0 + item.4 codec_out1_1 + } + } + control.449 { + iface MIXER + name 'codec_out interleaver slot 2' + value codec_out1_0 + comment { + access 'read write' + type ENUMERATED + count 1 + item.0 none + item.1 codec_out0_0 + item.2 codec_out0_1 + item.3 codec_out1_0 + item.4 codec_out1_1 + } + } + control.450 { + iface MIXER + name 'codec_out interleaver slot 3' + value codec_out1_1 + comment { + access 'read write' + type ENUMERATED + count 1 + item.0 none + item.1 codec_out0_0 + item.2 codec_out0_1 + item.3 codec_out1_0 + item.4 codec_out1_1 + } + } + control.451 { + iface MIXER + name 'codec_in deinterleaver codec_in0_0' + value 'slot 0' + comment { + access 'read write' + type ENUMERATED + count 1 + item.0 none + item.1 'slot 0' + item.2 'slot 1' + item.3 'slot 2' + item.4 'slot 3' + } + } + control.452 { + iface MIXER + name 'codec_in deinterleaver codec_in0_1' + value 'slot 1' + comment { + access 'read write' + type ENUMERATED + count 1 + item.0 none + item.1 'slot 0' + item.2 'slot 1' + item.3 'slot 2' + item.4 'slot 3' + } + } + control.453 { + iface MIXER + name 'codec_in deinterleaver codec_in1_0' + value none + comment { + access 'read write' + type ENUMERATED + count 1 + item.0 none + item.1 'slot 0' + item.2 'slot 1' + item.3 'slot 2' + item.4 'slot 3' + } + } + control.454 { + iface MIXER + name 'codec_in deinterleaver codec_in1_1' + value none + comment { + access 'read write' + type ENUMERATED + count 1 + item.0 none + item.1 'slot 0' + item.2 'slot 1' + item.3 'slot 2' + item.4 'slot 3' + } + } + control.455 { + iface MIXER + name 'domain voice mode 0' + value narrowband + comment { + access 'read write' + type ENUMERATED + count 1 + item.0 narrowband + item.1 wideband + } + } + control.456 { + iface MIXER + name 'domain bt mode 0' + value narrowband + comment { + access 'read write' + type ENUMERATED + count 1 + item.0 narrowband + item.1 wideband + } + } + control.457 { + iface MIXER + name 'sst debug byte control' + value '0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000' + comment { + access 'read write' + type BYTES + count 512 + } + } + control.458 { + iface MIXER + name 'probe out0 connection' + value 'media0_in gain' + comment { + access 'read write' + type ENUMERATED + count 1 + item.0 'media0_in gain' + item.1 'media1_in gain' + item.2 'media2_in gain' + item.3 'media3_in gain' + item.4 'pcm0_in gain' + item.5 'pcm1_in gain' + item.6 'pcm1_out gain' + item.7 'pcm2_out gain' + item.8 'voip_in gain' + item.9 'voip_out gain' + item.10 'aware_out gain' + item.11 'vad_out gain' + item.12 'hf_sns_out gain' + item.13 'hf_out gain' + item.14 'speech_out gain' + item.15 'txspeech_in gain' + item.16 'rxspeech_out gain' + item.17 'speech_in gain' + item.18 'media_loop1_out gain' + item.19 'media_loop2_out gain' + item.20 'tone_in gain' + item.21 'codec_out0 gain' + item.22 'codec_out1 gain' + item.23 'bt_out gain' + item.24 'fm_out gain' + item.25 'modem_out gain' + item.26 'codec_in0 gain' + item.27 'codec_in1 gain' + item.28 'bt_in gain' + item.29 'fm_in gain' + item.30 'modem_in gain' + } + } + control.459 { + iface MIXER + name 'probe out1 connection' + value 'media0_in gain' + comment { + access 'read write' + type ENUMERATED + count 1 + item.0 'media0_in gain' + item.1 'media1_in gain' + item.2 'media2_in gain' + item.3 'media3_in gain' + item.4 'pcm0_in gain' + item.5 'pcm1_in gain' + item.6 'pcm1_out gain' + item.7 'pcm2_out gain' + item.8 'voip_in gain' + item.9 'voip_out gain' + item.10 'aware_out gain' + item.11 'vad_out gain' + item.12 'hf_sns_out gain' + item.13 'hf_out gain' + item.14 'speech_out gain' + item.15 'txspeech_in gain' + item.16 'rxspeech_out gain' + item.17 'speech_in gain' + item.18 'media_loop1_out gain' + item.19 'media_loop2_out gain' + item.20 'tone_in gain' + item.21 'codec_out0 gain' + item.22 'codec_out1 gain' + item.23 'bt_out gain' + item.24 'fm_out gain' + item.25 'modem_out gain' + item.26 'codec_in0 gain' + item.27 'codec_in1 gain' + item.28 'bt_in gain' + item.29 'fm_in gain' + item.30 'modem_in gain' + } + } + control.460 { + iface MIXER + name 'probe out2 connection' + value 'media0_in gain' + comment { + access 'read write' + type ENUMERATED + count 1 + item.0 'media0_in gain' + item.1 'media1_in gain' + item.2 'media2_in gain' + item.3 'media3_in gain' + item.4 'pcm0_in gain' + item.5 'pcm1_in gain' + item.6 'pcm1_out gain' + item.7 'pcm2_out gain' + item.8 'voip_in gain' + item.9 'voip_out gain' + item.10 'aware_out gain' + item.11 'vad_out gain' + item.12 'hf_sns_out gain' + item.13 'hf_out gain' + item.14 'speech_out gain' + item.15 'txspeech_in gain' + item.16 'rxspeech_out gain' + item.17 'speech_in gain' + item.18 'media_loop1_out gain' + item.19 'media_loop2_out gain' + item.20 'tone_in gain' + item.21 'codec_out0 gain' + item.22 'codec_out1 gain' + item.23 'bt_out gain' + item.24 'fm_out gain' + item.25 'modem_out gain' + item.26 'codec_in0 gain' + item.27 'codec_in1 gain' + item.28 'bt_in gain' + item.29 'fm_in gain' + item.30 'modem_in gain' + } + } + control.461 { + iface MIXER + name 'probe out3 connection' + value 'media0_in gain' + comment { + access 'read write' + type ENUMERATED + count 1 + item.0 'media0_in gain' + item.1 'media1_in gain' + item.2 'media2_in gain' + item.3 'media3_in gain' + item.4 'pcm0_in gain' + item.5 'pcm1_in gain' + item.6 'pcm1_out gain' + item.7 'pcm2_out gain' + item.8 'voip_in gain' + item.9 'voip_out gain' + item.10 'aware_out gain' + item.11 'vad_out gain' + item.12 'hf_sns_out gain' + item.13 'hf_out gain' + item.14 'speech_out gain' + item.15 'txspeech_in gain' + item.16 'rxspeech_out gain' + item.17 'speech_in gain' + item.18 'media_loop1_out gain' + item.19 'media_loop2_out gain' + item.20 'tone_in gain' + item.21 'codec_out0 gain' + item.22 'codec_out1 gain' + item.23 'bt_out gain' + item.24 'fm_out gain' + item.25 'modem_out gain' + item.26 'codec_in0 gain' + item.27 'codec_in1 gain' + item.28 'bt_in gain' + item.29 'fm_in gain' + item.30 'modem_in gain' + } + } + control.462 { + iface MIXER + name 'probe out4 connection' + value 'media0_in gain' + comment { + access 'read write' + type ENUMERATED + count 1 + item.0 'media0_in gain' + item.1 'media1_in gain' + item.2 'media2_in gain' + item.3 'media3_in gain' + item.4 'pcm0_in gain' + item.5 'pcm1_in gain' + item.6 'pcm1_out gain' + item.7 'pcm2_out gain' + item.8 'voip_in gain' + item.9 'voip_out gain' + item.10 'aware_out gain' + item.11 'vad_out gain' + item.12 'hf_sns_out gain' + item.13 'hf_out gain' + item.14 'speech_out gain' + item.15 'txspeech_in gain' + item.16 'rxspeech_out gain' + item.17 'speech_in gain' + item.18 'media_loop1_out gain' + item.19 'media_loop2_out gain' + item.20 'tone_in gain' + item.21 'codec_out0 gain' + item.22 'codec_out1 gain' + item.23 'bt_out gain' + item.24 'fm_out gain' + item.25 'modem_out gain' + item.26 'codec_in0 gain' + item.27 'codec_in1 gain' + item.28 'bt_in gain' + item.29 'fm_in gain' + item.30 'modem_in gain' + } + } + control.463 { + iface MIXER + name 'probe out5 connection' + value 'media0_in gain' + comment { + access 'read write' + type ENUMERATED + count 1 + item.0 'media0_in gain' + item.1 'media1_in gain' + item.2 'media2_in gain' + item.3 'media3_in gain' + item.4 'pcm0_in gain' + item.5 'pcm1_in gain' + item.6 'pcm1_out gain' + item.7 'pcm2_out gain' + item.8 'voip_in gain' + item.9 'voip_out gain' + item.10 'aware_out gain' + item.11 'vad_out gain' + item.12 'hf_sns_out gain' + item.13 'hf_out gain' + item.14 'speech_out gain' + item.15 'txspeech_in gain' + item.16 'rxspeech_out gain' + item.17 'speech_in gain' + item.18 'media_loop1_out gain' + item.19 'media_loop2_out gain' + item.20 'tone_in gain' + item.21 'codec_out0 gain' + item.22 'codec_out1 gain' + item.23 'bt_out gain' + item.24 'fm_out gain' + item.25 'modem_out gain' + item.26 'codec_in0 gain' + item.27 'codec_in1 gain' + item.28 'bt_in gain' + item.29 'fm_in gain' + item.30 'modem_in gain' + } + } + control.464 { + iface MIXER + name 'probe out6 connection' + value 'media0_in gain' + comment { + access 'read write' + type ENUMERATED + count 1 + item.0 'media0_in gain' + item.1 'media1_in gain' + item.2 'media2_in gain' + item.3 'media3_in gain' + item.4 'pcm0_in gain' + item.5 'pcm1_in gain' + item.6 'pcm1_out gain' + item.7 'pcm2_out gain' + item.8 'voip_in gain' + item.9 'voip_out gain' + item.10 'aware_out gain' + item.11 'vad_out gain' + item.12 'hf_sns_out gain' + item.13 'hf_out gain' + item.14 'speech_out gain' + item.15 'txspeech_in gain' + item.16 'rxspeech_out gain' + item.17 'speech_in gain' + item.18 'media_loop1_out gain' + item.19 'media_loop2_out gain' + item.20 'tone_in gain' + item.21 'codec_out0 gain' + item.22 'codec_out1 gain' + item.23 'bt_out gain' + item.24 'fm_out gain' + item.25 'modem_out gain' + item.26 'codec_in0 gain' + item.27 'codec_in1 gain' + item.28 'bt_in gain' + item.29 'fm_in gain' + item.30 'modem_in gain' + } + } + control.465 { + iface MIXER + name 'probe out7 connection' + value 'media0_in gain' + comment { + access 'read write' + type ENUMERATED + count 1 + item.0 'media0_in gain' + item.1 'media1_in gain' + item.2 'media2_in gain' + item.3 'media3_in gain' + item.4 'pcm0_in gain' + item.5 'pcm1_in gain' + item.6 'pcm1_out gain' + item.7 'pcm2_out gain' + item.8 'voip_in gain' + item.9 'voip_out gain' + item.10 'aware_out gain' + item.11 'vad_out gain' + item.12 'hf_sns_out gain' + item.13 'hf_out gain' + item.14 'speech_out gain' + item.15 'txspeech_in gain' + item.16 'rxspeech_out gain' + item.17 'speech_in gain' + item.18 'media_loop1_out gain' + item.19 'media_loop2_out gain' + item.20 'tone_in gain' + item.21 'codec_out0 gain' + item.22 'codec_out1 gain' + item.23 'bt_out gain' + item.24 'fm_out gain' + item.25 'modem_out gain' + item.26 'codec_in0 gain' + item.27 'codec_in1 gain' + item.28 'bt_in gain' + item.29 'fm_in gain' + item.30 'modem_in gain' + } + } + control.466 { + iface MIXER + name 'probe in0 connection' + value 'media0_in gain' + comment { + access 'read write' + type ENUMERATED + count 1 + item.0 'media0_in gain' + item.1 'media1_in gain' + item.2 'media2_in gain' + item.3 'media3_in gain' + item.4 'pcm0_in gain' + item.5 'pcm1_in gain' + item.6 'pcm1_out gain' + item.7 'pcm2_out gain' + item.8 'voip_in gain' + item.9 'voip_out gain' + item.10 'aware_out gain' + item.11 'vad_out gain' + item.12 'hf_sns_out gain' + item.13 'hf_out gain' + item.14 'speech_out gain' + item.15 'txspeech_in gain' + item.16 'rxspeech_out gain' + item.17 'speech_in gain' + item.18 'media_loop1_out gain' + item.19 'media_loop2_out gain' + item.20 'tone_in gain' + item.21 'codec_out0 gain' + item.22 'codec_out1 gain' + item.23 'bt_out gain' + item.24 'fm_out gain' + item.25 'modem_out gain' + item.26 'codec_in0 gain' + item.27 'codec_in1 gain' + item.28 'bt_in gain' + item.29 'fm_in gain' + item.30 'modem_in gain' + } + } + control.467 { + iface MIXER + name 'probe in1 connection' + value 'media0_in gain' + comment { + access 'read write' + type ENUMERATED + count 1 + item.0 'media0_in gain' + item.1 'media1_in gain' + item.2 'media2_in gain' + item.3 'media3_in gain' + item.4 'pcm0_in gain' + item.5 'pcm1_in gain' + item.6 'pcm1_out gain' + item.7 'pcm2_out gain' + item.8 'voip_in gain' + item.9 'voip_out gain' + item.10 'aware_out gain' + item.11 'vad_out gain' + item.12 'hf_sns_out gain' + item.13 'hf_out gain' + item.14 'speech_out gain' + item.15 'txspeech_in gain' + item.16 'rxspeech_out gain' + item.17 'speech_in gain' + item.18 'media_loop1_out gain' + item.19 'media_loop2_out gain' + item.20 'tone_in gain' + item.21 'codec_out0 gain' + item.22 'codec_out1 gain' + item.23 'bt_out gain' + item.24 'fm_out gain' + item.25 'modem_out gain' + item.26 'codec_in0 gain' + item.27 'codec_in1 gain' + item.28 'bt_in gain' + item.29 'fm_in gain' + item.30 'modem_in gain' + } + } + control.468 { + iface MIXER + name 'probe in2 connection' + value 'media0_in gain' + comment { + access 'read write' + type ENUMERATED + count 1 + item.0 'media0_in gain' + item.1 'media1_in gain' + item.2 'media2_in gain' + item.3 'media3_in gain' + item.4 'pcm0_in gain' + item.5 'pcm1_in gain' + item.6 'pcm1_out gain' + item.7 'pcm2_out gain' + item.8 'voip_in gain' + item.9 'voip_out gain' + item.10 'aware_out gain' + item.11 'vad_out gain' + item.12 'hf_sns_out gain' + item.13 'hf_out gain' + item.14 'speech_out gain' + item.15 'txspeech_in gain' + item.16 'rxspeech_out gain' + item.17 'speech_in gain' + item.18 'media_loop1_out gain' + item.19 'media_loop2_out gain' + item.20 'tone_in gain' + item.21 'codec_out0 gain' + item.22 'codec_out1 gain' + item.23 'bt_out gain' + item.24 'fm_out gain' + item.25 'modem_out gain' + item.26 'codec_in0 gain' + item.27 'codec_in1 gain' + item.28 'bt_in gain' + item.29 'fm_in gain' + item.30 'modem_in gain' + } + } + control.469 { + iface MIXER + name 'probe in3 connection' + value 'media0_in gain' + comment { + access 'read write' + type ENUMERATED + count 1 + item.0 'media0_in gain' + item.1 'media1_in gain' + item.2 'media2_in gain' + item.3 'media3_in gain' + item.4 'pcm0_in gain' + item.5 'pcm1_in gain' + item.6 'pcm1_out gain' + item.7 'pcm2_out gain' + item.8 'voip_in gain' + item.9 'voip_out gain' + item.10 'aware_out gain' + item.11 'vad_out gain' + item.12 'hf_sns_out gain' + item.13 'hf_out gain' + item.14 'speech_out gain' + item.15 'txspeech_in gain' + item.16 'rxspeech_out gain' + item.17 'speech_in gain' + item.18 'media_loop1_out gain' + item.19 'media_loop2_out gain' + item.20 'tone_in gain' + item.21 'codec_out0 gain' + item.22 'codec_out1 gain' + item.23 'bt_out gain' + item.24 'fm_out gain' + item.25 'modem_out gain' + item.26 'codec_in0 gain' + item.27 'codec_in1 gain' + item.28 'bt_in gain' + item.29 'fm_in gain' + item.30 'modem_in gain' + } + } + control.470 { + iface MIXER + name 'probe in4 connection' + value 'media0_in gain' + comment { + access 'read write' + type ENUMERATED + count 1 + item.0 'media0_in gain' + item.1 'media1_in gain' + item.2 'media2_in gain' + item.3 'media3_in gain' + item.4 'pcm0_in gain' + item.5 'pcm1_in gain' + item.6 'pcm1_out gain' + item.7 'pcm2_out gain' + item.8 'voip_in gain' + item.9 'voip_out gain' + item.10 'aware_out gain' + item.11 'vad_out gain' + item.12 'hf_sns_out gain' + item.13 'hf_out gain' + item.14 'speech_out gain' + item.15 'txspeech_in gain' + item.16 'rxspeech_out gain' + item.17 'speech_in gain' + item.18 'media_loop1_out gain' + item.19 'media_loop2_out gain' + item.20 'tone_in gain' + item.21 'codec_out0 gain' + item.22 'codec_out1 gain' + item.23 'bt_out gain' + item.24 'fm_out gain' + item.25 'modem_out gain' + item.26 'codec_in0 gain' + item.27 'codec_in1 gain' + item.28 'bt_in gain' + item.29 'fm_in gain' + item.30 'modem_in gain' + } + } + control.471 { + iface MIXER + name 'probe in5 connection' + value 'media0_in gain' + comment { + access 'read write' + type ENUMERATED + count 1 + item.0 'media0_in gain' + item.1 'media1_in gain' + item.2 'media2_in gain' + item.3 'media3_in gain' + item.4 'pcm0_in gain' + item.5 'pcm1_in gain' + item.6 'pcm1_out gain' + item.7 'pcm2_out gain' + item.8 'voip_in gain' + item.9 'voip_out gain' + item.10 'aware_out gain' + item.11 'vad_out gain' + item.12 'hf_sns_out gain' + item.13 'hf_out gain' + item.14 'speech_out gain' + item.15 'txspeech_in gain' + item.16 'rxspeech_out gain' + item.17 'speech_in gain' + item.18 'media_loop1_out gain' + item.19 'media_loop2_out gain' + item.20 'tone_in gain' + item.21 'codec_out0 gain' + item.22 'codec_out1 gain' + item.23 'bt_out gain' + item.24 'fm_out gain' + item.25 'modem_out gain' + item.26 'codec_in0 gain' + item.27 'codec_in1 gain' + item.28 'bt_in gain' + item.29 'fm_in gain' + item.30 'modem_in gain' + } + } + control.472 { + iface MIXER + name 'probe in6 connection' + value 'media0_in gain' + comment { + access 'read write' + type ENUMERATED + count 1 + item.0 'media0_in gain' + item.1 'media1_in gain' + item.2 'media2_in gain' + item.3 'media3_in gain' + item.4 'pcm0_in gain' + item.5 'pcm1_in gain' + item.6 'pcm1_out gain' + item.7 'pcm2_out gain' + item.8 'voip_in gain' + item.9 'voip_out gain' + item.10 'aware_out gain' + item.11 'vad_out gain' + item.12 'hf_sns_out gain' + item.13 'hf_out gain' + item.14 'speech_out gain' + item.15 'txspeech_in gain' + item.16 'rxspeech_out gain' + item.17 'speech_in gain' + item.18 'media_loop1_out gain' + item.19 'media_loop2_out gain' + item.20 'tone_in gain' + item.21 'codec_out0 gain' + item.22 'codec_out1 gain' + item.23 'bt_out gain' + item.24 'fm_out gain' + item.25 'modem_out gain' + item.26 'codec_in0 gain' + item.27 'codec_in1 gain' + item.28 'bt_in gain' + item.29 'fm_in gain' + item.30 'modem_in gain' + } + } + control.473 { + iface MIXER + name 'probe in7 connection' + value 'media0_in gain' + comment { + access 'read write' + type ENUMERATED + count 1 + item.0 'media0_in gain' + item.1 'media1_in gain' + item.2 'media2_in gain' + item.3 'media3_in gain' + item.4 'pcm0_in gain' + item.5 'pcm1_in gain' + item.6 'pcm1_out gain' + item.7 'pcm2_out gain' + item.8 'voip_in gain' + item.9 'voip_out gain' + item.10 'aware_out gain' + item.11 'vad_out gain' + item.12 'hf_sns_out gain' + item.13 'hf_out gain' + item.14 'speech_out gain' + item.15 'txspeech_in gain' + item.16 'rxspeech_out gain' + item.17 'speech_in gain' + item.18 'media_loop1_out gain' + item.19 'media_loop2_out gain' + item.20 'tone_in gain' + item.21 'codec_out0 gain' + item.22 'codec_out1 gain' + item.23 'bt_out gain' + item.24 'fm_out gain' + item.25 'modem_out gain' + item.26 'codec_in0 gain' + item.27 'codec_in1 gain' + item.28 'bt_in gain' + item.29 'fm_in gain' + item.30 'modem_in gain' + } + } + control.474 { + iface MIXER + name 'AIF1.1 DRC' + value '00980845000000000000' + comment { + access 'read write' + type BYTES + count 10 + } + } + control.475 { + iface MIXER + name 'AIF1.2 DRC' + value '00980845000000000000' + comment { + access 'read write' + type BYTES + count 10 + } + } + control.476 { + iface MIXER + name 'AIF2 DRC' + value '00980845000000000000' + comment { + access 'read write' + type BYTES + count 10 + } + } + control.477 { + iface MIXER + name 'AIF1DAC1 EQ1 Volume' + value 12 + comment { + access 'read write' + type INTEGER + count 1 + range '0 - 31' + dbmin -1200 + dbmax 1900 + dbvalue.0 0 + } + } + control.478 { + iface MIXER + name 'AIF1DAC1 EQ2 Volume' + value 12 + comment { + access 'read write' + type INTEGER + count 1 + range '0 - 31' + dbmin -1200 + dbmax 1900 + dbvalue.0 0 + } + } + control.479 { + iface MIXER + name 'AIF1DAC1 EQ3 Volume' + value 12 + comment { + access 'read write' + type INTEGER + count 1 + range '0 - 31' + dbmin -1200 + dbmax 1900 + dbvalue.0 0 + } + } + control.480 { + iface MIXER + name 'AIF1DAC1 EQ4 Volume' + value 12 + comment { + access 'read write' + type INTEGER + count 1 + range '0 - 31' + dbmin -1200 + dbmax 1900 + dbvalue.0 0 + } + } + control.481 { + iface MIXER + name 'AIF1DAC1 EQ5 Volume' + value 12 + comment { + access 'read write' + type INTEGER + count 1 + range '0 - 31' + dbmin -1200 + dbmax 1900 + dbvalue.0 0 + } + } + control.482 { + iface MIXER + name 'AIF1DAC2 EQ1 Volume' + value 12 + comment { + access 'read write' + type INTEGER + count 1 + range '0 - 31' + dbmin -1200 + dbmax 1900 + dbvalue.0 0 + } + } + control.483 { + iface MIXER + name 'AIF1DAC2 EQ2 Volume' + value 12 + comment { + access 'read write' + type INTEGER + count 1 + range '0 - 31' + dbmin -1200 + dbmax 1900 + dbvalue.0 0 + } + } + control.484 { + iface MIXER + name 'AIF1DAC2 EQ3 Volume' + value 12 + comment { + access 'read write' + type INTEGER + count 1 + range '0 - 31' + dbmin -1200 + dbmax 1900 + dbvalue.0 0 + } + } + control.485 { + iface MIXER + name 'AIF1DAC2 EQ4 Volume' + value 12 + comment { + access 'read write' + type INTEGER + count 1 + range '0 - 31' + dbmin -1200 + dbmax 1900 + dbvalue.0 0 + } + } + control.486 { + iface MIXER + name 'AIF1DAC2 EQ5 Volume' + value 12 + comment { + access 'read write' + type INTEGER + count 1 + range '0 - 31' + dbmin -1200 + dbmax 1900 + dbvalue.0 0 + } + } + control.487 { + iface MIXER + name 'AIF2 EQ1 Volume' + value 12 + comment { + access 'read write' + type INTEGER + count 1 + range '0 - 31' + dbmin -1200 + dbmax 1900 + dbvalue.0 0 + } + } + control.488 { + iface MIXER + name 'AIF2 EQ2 Volume' + value 12 + comment { + access 'read write' + type INTEGER + count 1 + range '0 - 31' + dbmin -1200 + dbmax 1900 + dbvalue.0 0 + } + } + control.489 { + iface MIXER + name 'AIF2 EQ3 Volume' + value 12 + comment { + access 'read write' + type INTEGER + count 1 + range '0 - 31' + dbmin -1200 + dbmax 1900 + dbvalue.0 0 + } + } + control.490 { + iface MIXER + name 'AIF2 EQ4 Volume' + value 12 + comment { + access 'read write' + type INTEGER + count 1 + range '0 - 31' + dbmin -1200 + dbmax 1900 + dbvalue.0 0 + } + } + control.491 { + iface MIXER + name 'AIF2 EQ5 Volume' + value 12 + comment { + access 'read write' + type INTEGER + count 1 + range '0 - 31' + dbmin -1200 + dbmax 1900 + dbvalue.0 0 + } + } + control.492 { + iface MIXER + name 'IN1L Volume' + value 11 + comment { + access 'read write' + type INTEGER + count 1 + range '0 - 31' + dbmin -1650 + dbmax 3000 + dbvalue.0 0 + } + } + control.493 { + iface MIXER + name 'IN1L Switch' + value true + comment { + access 'read write' + type BOOLEAN + count 1 + } + } + control.494 { + iface MIXER + name 'IN1L ZC Switch' + value false + comment { + access 'read write' + type BOOLEAN + count 1 + } + } + control.495 { + iface MIXER + name 'IN1R Volume' + value 11 + comment { + access 'read write' + type INTEGER + count 1 + range '0 - 31' + dbmin -1650 + dbmax 3000 + dbvalue.0 0 + } + } + control.496 { + iface MIXER + name 'IN1R Switch' + value false + comment { + access 'read write' + type BOOLEAN + count 1 + } + } + control.497 { + iface MIXER + name 'IN1R ZC Switch' + value false + comment { + access 'read write' + type BOOLEAN + count 1 + } + } + control.498 { + iface MIXER + name 'IN2L Volume' + value 11 + comment { + access 'read write' + type INTEGER + count 1 + range '0 - 31' + dbmin -1650 + dbmax 3000 + dbvalue.0 0 + } + } + control.499 { + iface MIXER + name 'IN2L Switch' + value false + comment { + access 'read write' + type BOOLEAN + count 1 + } + } + control.500 { + iface MIXER + name 'IN2L ZC Switch' + value false + comment { + access 'read write' + type BOOLEAN + count 1 + } + } + control.501 { + iface MIXER + name 'IN2R Volume' + value 11 + comment { + access 'read write' + type INTEGER + count 1 + range '0 - 31' + dbmin -1650 + dbmax 3000 + dbvalue.0 0 + } + } + control.502 { + iface MIXER + name 'IN2R Switch' + value false + comment { + access 'read write' + type BOOLEAN + count 1 + } + } + control.503 { + iface MIXER + name 'IN2R ZC Switch' + value false + comment { + access 'read write' + type BOOLEAN + count 1 + } + } + control.504 { + iface MIXER + name 'MIXINL IN2L Volume' + value 0 + comment { + access 'read write' + type INTEGER + count 1 + range '0 - 1' + dbmin 0 + dbmax 3000 + dbvalue.0 0 + } + } + control.505 { + iface MIXER + name 'MIXINL IN1L Volume' + value 0 + comment { + access 'read write' + type INTEGER + count 1 + range '0 - 1' + dbmin 0 + dbmax 3000 + dbvalue.0 0 + } + } + control.506 { + iface MIXER + name 'MIXINL Output Record Volume' + value 0 + comment { + access 'read write' + type INTEGER + count 1 + range '0 - 7' + dbmin -9999999 + dbmax 600 + dbvalue.0 -9999999 + } + } + control.507 { + iface MIXER + name 'MIXINL IN1LP Volume' + value 0 + comment { + access 'read write' + type INTEGER + count 1 + range '0 - 7' + dbmin -9999999 + dbmax 600 + dbvalue.0 -9999999 + } + } + control.508 { + iface MIXER + name 'MIXINL Direct Voice Volume' + value 0 + comment { + access 'read write' + type INTEGER + count 1 + range '0 - 6' + dbmin -9999999 + dbmax 300 + dbvalue.0 -9999999 + } + } + control.509 { + iface MIXER + name 'MIXINR IN2R Volume' + value 0 + comment { + access 'read write' + type INTEGER + count 1 + range '0 - 1' + dbmin 0 + dbmax 3000 + dbvalue.0 0 + } + } + control.510 { + iface MIXER + name 'MIXINR IN1R Volume' + value 0 + comment { + access 'read write' + type INTEGER + count 1 + range '0 - 1' + dbmin 0 + dbmax 3000 + dbvalue.0 0 + } + } + control.511 { + iface MIXER + name 'MIXINR Output Record Volume' + value 0 + comment { + access 'read write' + type INTEGER + count 1 + range '0 - 7' + dbmin -9999999 + dbmax 600 + dbvalue.0 -9999999 + } + } + control.512 { + iface MIXER + name 'MIXINR IN1RP Volume' + value 0 + comment { + access 'read write' + type INTEGER + count 1 + range '0 - 7' + dbmin -9999999 + dbmax 600 + dbvalue.0 -9999999 + } + } + control.513 { + iface MIXER + name 'MIXINR Direct Voice Volume' + value 0 + comment { + access 'read write' + type INTEGER + count 1 + range '0 - 6' + dbmin -9999999 + dbmax 300 + dbvalue.0 -9999999 + } + } + control.514 { + iface MIXER + name 'Left Output Mixer IN2RN Volume' + value 7 + comment { + access 'read write' + type INTEGER + count 1 + range '0 - 7' + dbmin -2100 + dbmax 0 + dbvalue.0 0 + } + } + control.515 { + iface MIXER + name 'Left Output Mixer IN2LN Volume' + value 7 + comment { + access 'read write' + type INTEGER + count 1 + range '0 - 7' + dbmin -2100 + dbmax 0 + dbvalue.0 0 + } + } + control.516 { + iface MIXER + name 'Left Output Mixer IN2LP Volume' + value 7 + comment { + access 'read write' + type INTEGER + count 1 + range '0 - 7' + dbmin -2100 + dbmax 0 + dbvalue.0 0 + } + } + control.517 { + iface MIXER + name 'Left Output Mixer IN1L Volume' + value 7 + comment { + access 'read write' + type INTEGER + count 1 + range '0 - 7' + dbmin -2100 + dbmax 0 + dbvalue.0 0 + } + } + control.518 { + iface MIXER + name 'Left Output Mixer IN1R Volume' + value 7 + comment { + access 'read write' + type INTEGER + count 1 + range '0 - 7' + dbmin -2100 + dbmax 0 + dbvalue.0 0 + } + } + control.519 { + iface MIXER + name 'Left Output Mixer Right Input Volume' + value 7 + comment { + access 'read write' + type INTEGER + count 1 + range '0 - 7' + dbmin -2100 + dbmax 0 + dbvalue.0 0 + } + } + control.520 { + iface MIXER + name 'Left Output Mixer Left Input Volume' + value 7 + comment { + access 'read write' + type INTEGER + count 1 + range '0 - 7' + dbmin -2100 + dbmax 0 + dbvalue.0 0 + } + } + control.521 { + iface MIXER + name 'Left Output Mixer DAC Volume' + value 7 + comment { + access 'read write' + type INTEGER + count 1 + range '0 - 7' + dbmin -2100 + dbmax 0 + dbvalue.0 0 + } + } + control.522 { + iface MIXER + name 'Right Output Mixer IN2LN Volume' + value 7 + comment { + access 'read write' + type INTEGER + count 1 + range '0 - 7' + dbmin -2100 + dbmax 0 + dbvalue.0 0 + } + } + control.523 { + iface MIXER + name 'Right Output Mixer IN2RN Volume' + value 7 + comment { + access 'read write' + type INTEGER + count 1 + range '0 - 7' + dbmin -2100 + dbmax 0 + dbvalue.0 0 + } + } + control.524 { + iface MIXER + name 'Right Output Mixer IN1L Volume' + value 7 + comment { + access 'read write' + type INTEGER + count 1 + range '0 - 7' + dbmin -2100 + dbmax 0 + dbvalue.0 0 + } + } + control.525 { + iface MIXER + name 'Right Output Mixer IN1R Volume' + value 7 + comment { + access 'read write' + type INTEGER + count 1 + range '0 - 7' + dbmin -2100 + dbmax 0 + dbvalue.0 0 + } + } + control.526 { + iface MIXER + name 'Right Output Mixer IN2RP Volume' + value 7 + comment { + access 'read write' + type INTEGER + count 1 + range '0 - 7' + dbmin -2100 + dbmax 0 + dbvalue.0 0 + } + } + control.527 { + iface MIXER + name 'Right Output Mixer Left Input Volume' + value 7 + comment { + access 'read write' + type INTEGER + count 1 + range '0 - 7' + dbmin -2100 + dbmax 0 + dbvalue.0 0 + } + } + control.528 { + iface MIXER + name 'Right Output Mixer Right Input Volume' + value 7 + comment { + access 'read write' + type INTEGER + count 1 + range '0 - 7' + dbmin -2100 + dbmax 0 + dbvalue.0 0 + } + } + control.529 { + iface MIXER + name 'Right Output Mixer DAC Volume' + value 7 + comment { + access 'read write' + type INTEGER + count 1 + range '0 - 7' + dbmin -2100 + dbmax 0 + dbvalue.0 0 + } + } + control.530 { + iface MIXER + name 'Output Volume' + value.0 57 + value.1 57 + comment { + access 'read write' + type INTEGER + count 2 + range '0 - 63' + dbmin -5700 + dbmax 600 + dbvalue.0 0 + dbvalue.1 0 + } + } + control.531 { + iface MIXER + name 'Output Switch' + value.0 true + value.1 true + comment { + access 'read write' + type BOOLEAN + count 2 + } + } + control.532 { + iface MIXER + name 'Output ZC Switch' + value.0 true + value.1 true + comment { + access 'read write' + type BOOLEAN + count 2 + } + } + control.533 { + iface MIXER + name 'Earpiece Switch' + value false + comment { + access 'read write' + type BOOLEAN + count 1 + } + } + control.534 { + iface MIXER + name 'Earpiece Volume' + value 1 + comment { + access 'read write' + type INTEGER + count 1 + range '0 - 1' + dbmin -600 + dbmax 0 + dbvalue.0 0 + } + } + control.535 { + iface MIXER + name 'SPKL Input Volume' + value 1 + comment { + access 'read write' + type INTEGER + count 1 + range '0 - 1' + dbmin -300 + dbmax 0 + dbvalue.0 0 + } + } + control.536 { + iface MIXER + name 'SPKL IN1LP Volume' + value 1 + comment { + access 'read write' + type INTEGER + count 1 + range '0 - 1' + dbmin -300 + dbmax 0 + dbvalue.0 0 + } + } + control.537 { + iface MIXER + name 'SPKL Output Volume' + value 1 + comment { + access 'read write' + type INTEGER + count 1 + range '0 - 1' + dbmin -300 + dbmax 0 + dbvalue.0 0 + } + } + control.538 { + iface MIXER + name 'SPKR Input Volume' + value 1 + comment { + access 'read write' + type INTEGER + count 1 + range '0 - 1' + dbmin -300 + dbmax 0 + dbvalue.0 0 + } + } + control.539 { + iface MIXER + name 'SPKR IN1RP Volume' + value 1 + comment { + access 'read write' + type INTEGER + count 1 + range '0 - 1' + dbmin -300 + dbmax 0 + dbvalue.0 0 + } + } + control.540 { + iface MIXER + name 'SPKR Output Volume' + value 1 + comment { + access 'read write' + type INTEGER + count 1 + range '0 - 1' + dbmin -300 + dbmax 0 + dbvalue.0 0 + } + } + control.541 { + iface MIXER + name 'Speaker Mixer Volume' + value.0 3 + value.1 3 + comment { + access 'read write' + type INTEGER + count 2 + range '0 - 3' + dbmin -9999999 + dbmax 0 + dbvalue.0 0 + dbvalue.1 0 + } + } + control.542 { + iface MIXER + name 'Speaker Volume' + value.0 57 + value.1 57 + comment { + access 'read write' + type INTEGER + count 2 + range '0 - 63' + dbmin -5700 + dbmax 600 + dbvalue.0 0 + dbvalue.1 0 + } + } + control.543 { + iface MIXER + name 'Speaker Switch' + value.0 true + value.1 true + comment { + access 'read write' + type BOOLEAN + count 2 + } + } + control.544 { + iface MIXER + name 'Speaker ZC Switch' + value.0 true + value.1 true + comment { + access 'read write' + type BOOLEAN + count 2 + } + } + control.545 { + iface MIXER + name 'Speaker Boost Volume' + value.0 0 + value.1 0 + comment { + access 'read write' + type INTEGER + count 2 + range '0 - 7' + dbmin 0 + dbmax 1200 + dbvalue.0 0 + dbvalue.1 0 + } + } + control.546 { + iface MIXER + name 'Speaker Reference' + value SPKVDD/2 + comment { + access 'read write' + type ENUMERATED + count 1 + item.0 SPKVDD/2 + item.1 VMID + } + } + control.547 { + iface MIXER + name 'Speaker Mode' + value 'Class D' + comment { + access 'read write' + type ENUMERATED + count 1 + item.0 'Class D' + item.1 'Class AB' + } + } + control.548 { + iface MIXER + name 'Headphone Volume' + value.0 45 + value.1 45 + comment { + access 'read write' + type INTEGER + count 2 + range '0 - 63' + dbmin -5700 + dbmax 600 + dbvalue.0 -1200 + dbvalue.1 -1200 + } + } + control.549 { + iface MIXER + name 'Headphone Switch' + value.0 true + value.1 true + comment { + access 'read write' + type BOOLEAN + count 2 + } + } + control.550 { + iface MIXER + name 'Headphone ZC Switch' + value.0 true + value.1 true + comment { + access 'read write' + type BOOLEAN + count 2 + } + } + control.551 { + iface MIXER + name 'LINEOUT1N Switch' + value false + comment { + access 'read write' + type BOOLEAN + count 1 + } + } + control.552 { + iface MIXER + name 'LINEOUT1P Switch' + value false + comment { + access 'read write' + type BOOLEAN + count 1 + } + } + control.553 { + iface MIXER + name 'LINEOUT1 Volume' + value 1 + comment { + access 'read write' + type INTEGER + count 1 + range '0 - 1' + dbmin -600 + dbmax 0 + dbvalue.0 0 + } + } + control.554 { + iface MIXER + name 'LINEOUT2N Switch' + value false + comment { + access 'read write' + type BOOLEAN + count 1 + } + } + control.555 { + iface MIXER + name 'LINEOUT2P Switch' + value false + comment { + access 'read write' + type BOOLEAN + count 1 + } + } + control.556 { + iface MIXER + name 'LINEOUT2 Volume' + value 1 + comment { + access 'read write' + type INTEGER + count 1 + range '0 - 1' + dbmin -600 + dbmax 0 + dbvalue.0 0 + } + } + control.557 { + iface MIXER + name 'AIF1ADC1 Volume' + value.0 110 + value.1 110 + comment { + access 'read write' + type INTEGER + count 2 + range '0 - 120' + dbmin -9999999 + dbmax 1800 + dbvalue.0 1050 + dbvalue.1 1050 + } + } + control.558 { + iface MIXER + name 'AIF1ADC2 Volume' + value.0 96 + value.1 96 + comment { + access 'read write' + type INTEGER + count 2 + range '0 - 120' + dbmin -9999999 + dbmax 1800 + dbvalue.0 0 + dbvalue.1 0 + } + } + control.559 { + iface MIXER + name 'AIF2ADC Volume' + value.0 96 + value.1 96 + comment { + access 'read write' + type INTEGER + count 2 + range '0 - 120' + dbmin -9999999 + dbmax 1800 + dbvalue.0 0 + dbvalue.1 0 + } + } + control.560 { + iface MIXER + name 'AIF1ADCL Source' + value Left + comment { + access 'read write' + type ENUMERATED + count 1 + item.0 Left + item.1 Right + } + } + control.561 { + iface MIXER + name 'AIF1ADCR Source' + value Right + comment { + access 'read write' + type ENUMERATED + count 1 + item.0 Left + item.1 Right + } + } + control.562 { + iface MIXER + name 'AIF2ADCL Source' + value Left + comment { + access 'read write' + type ENUMERATED + count 1 + item.0 Left + item.1 Right + } + } + control.563 { + iface MIXER + name 'AIF2ADCR Source' + value Right + comment { + access 'read write' + type ENUMERATED + count 1 + item.0 Left + item.1 Right + } + } + control.564 { + iface MIXER + name 'AIF1DACL Source' + value Left + comment { + access 'read write' + type ENUMERATED + count 1 + item.0 Left + item.1 Right + } + } + control.565 { + iface MIXER + name 'AIF1DACR Source' + value Right + comment { + access 'read write' + type ENUMERATED + count 1 + item.0 Left + item.1 Right + } + } + control.566 { + iface MIXER + name 'AIF2DACL Source' + value Left + comment { + access 'read write' + type ENUMERATED + count 1 + item.0 Left + item.1 Right + } + } + control.567 { + iface MIXER + name 'AIF2DACR Source' + value Right + comment { + access 'read write' + type ENUMERATED + count 1 + item.0 Left + item.1 Right + } + } + control.568 { + iface MIXER + name 'AIF1DAC1 Volume' + value.0 96 + value.1 96 + comment { + access 'read write' + type INTEGER + count 2 + range '0 - 96' + dbmin -9999999 + dbmax 0 + dbvalue.0 0 + dbvalue.1 0 + } + } + control.569 { + iface MIXER + name 'AIF1DAC2 Volume' + value.0 96 + value.1 96 + comment { + access 'read write' + type INTEGER + count 2 + range '0 - 96' + dbmin -9999999 + dbmax 0 + dbvalue.0 0 + dbvalue.1 0 + } + } + control.570 { + iface MIXER + name 'AIF2DAC Volume' + value.0 96 + value.1 96 + comment { + access 'read write' + type INTEGER + count 2 + range '0 - 96' + dbmin -9999999 + dbmax 0 + dbvalue.0 0 + dbvalue.1 0 + } + } + control.571 { + iface MIXER + name 'AIF1 Boost Volume' + value 0 + comment { + access 'read write' + type INTEGER + count 1 + range '0 - 3' + dbmin 0 + dbmax 1800 + dbvalue.0 0 + } + } + control.572 { + iface MIXER + name 'AIF2 Boost Volume' + value 0 + comment { + access 'read write' + type INTEGER + count 1 + range '0 - 3' + dbmin 0 + dbmax 1800 + dbvalue.0 0 + } + } + control.573 { + iface MIXER + name 'AIF1DAC1 EQ Switch' + value false + comment { + access 'read write' + type BOOLEAN + count 1 + } + } + control.574 { + iface MIXER + name 'AIF1DAC2 EQ Switch' + value false + comment { + access 'read write' + type BOOLEAN + count 1 + } + } + control.575 { + iface MIXER + name 'AIF2 EQ Switch' + value false + comment { + access 'read write' + type BOOLEAN + count 1 + } + } + control.576 { + iface MIXER + name 'AIF1DAC1 DRC Switch' + value false + comment { + access 'read write' + type BOOLEAN + count 1 + } + } + control.577 { + iface MIXER + name 'AIF1ADC1L DRC Switch' + value false + comment { + access 'read write' + type BOOLEAN + count 1 + } + } + control.578 { + iface MIXER + name 'AIF1ADC1R DRC Switch' + value false + comment { + access 'read write' + type BOOLEAN + count 1 + } + } + control.579 { + iface MIXER + name 'AIF1DAC2 DRC Switch' + value false + comment { + access 'read write' + type BOOLEAN + count 1 + } + } + control.580 { + iface MIXER + name 'AIF1ADC2L DRC Switch' + value false + comment { + access 'read write' + type BOOLEAN + count 1 + } + } + control.581 { + iface MIXER + name 'AIF1ADC2R DRC Switch' + value false + comment { + access 'read write' + type BOOLEAN + count 1 + } + } + control.582 { + iface MIXER + name 'AIF2DAC DRC Switch' + value false + comment { + access 'read write' + type BOOLEAN + count 1 + } + } + control.583 { + iface MIXER + name 'AIF2ADCL DRC Switch' + value false + comment { + access 'read write' + type BOOLEAN + count 1 + } + } + control.584 { + iface MIXER + name 'AIF2ADCR DRC Switch' + value false + comment { + access 'read write' + type BOOLEAN + count 1 + } + } + control.585 { + iface MIXER + name 'DAC1 Right Sidetone Volume' + value 0 + comment { + access 'read write' + type INTEGER + count 1 + range '0 - 12' + dbmin -3600 + dbmax 0 + dbvalue.0 -3600 + } + } + control.586 { + iface MIXER + name 'DAC1 Left Sidetone Volume' + value 0 + comment { + access 'read write' + type INTEGER + count 1 + range '0 - 12' + dbmin -3600 + dbmax 0 + dbvalue.0 -3600 + } + } + control.587 { + iface MIXER + name 'DAC2 Right Sidetone Volume' + value 0 + comment { + access 'read write' + type INTEGER + count 1 + range '0 - 12' + dbmin -3600 + dbmax 0 + dbvalue.0 -3600 + } + } + control.588 { + iface MIXER + name 'DAC2 Left Sidetone Volume' + value 0 + comment { + access 'read write' + type INTEGER + count 1 + range '0 - 12' + dbmin -3600 + dbmax 0 + dbvalue.0 -3600 + } + } + control.589 { + iface MIXER + name 'Sidetone HPF Mux' + value '2.7kHz' + comment { + access 'read write' + type ENUMERATED + count 1 + item.0 '2.7kHz' + item.1 '1.35kHz' + item.2 '675Hz' + item.3 '370Hz' + item.4 '180Hz' + item.5 '90Hz' + item.6 '45Hz' + } + } + control.590 { + iface MIXER + name 'Sidetone HPF Switch' + value false + comment { + access 'read write' + type BOOLEAN + count 1 + } + } + control.591 { + iface MIXER + name 'AIF1ADC1 HPF Mode' + value HiFi + comment { + access 'read write' + type ENUMERATED + count 1 + item.0 HiFi + item.1 'Voice 1' + item.2 'Voice 2' + item.3 'Voice 3' + } + } + control.592 { + iface MIXER + name 'AIF1ADC1 HPF Switch' + value.0 false + value.1 false + comment { + access 'read write' + type BOOLEAN + count 2 + } + } + control.593 { + iface MIXER + name 'AIF1ADC2 HPF Mode' + value HiFi + comment { + access 'read write' + type ENUMERATED + count 1 + item.0 HiFi + item.1 'Voice 1' + item.2 'Voice 2' + item.3 'Voice 3' + } + } + control.594 { + iface MIXER + name 'AIF1ADC2 HPF Switch' + value.0 false + value.1 false + comment { + access 'read write' + type BOOLEAN + count 2 + } + } + control.595 { + iface MIXER + name 'AIF2ADC HPF Mode' + value HiFi + comment { + access 'read write' + type ENUMERATED + count 1 + item.0 HiFi + item.1 'Voice 1' + item.2 'Voice 2' + item.3 'Voice 3' + } + } + control.596 { + iface MIXER + name 'AIF2ADC HPF Switch' + value.0 false + value.1 false + comment { + access 'read write' + type BOOLEAN + count 2 + } + } + control.597 { + iface MIXER + name 'ADC OSR' + value 'High Performance' + comment { + access 'read write' + type ENUMERATED + count 1 + item.0 'Low Power' + item.1 'High Performance' + } + } + control.598 { + iface MIXER + name 'DAC OSR' + value 'Low Power' + comment { + access 'read write' + type ENUMERATED + count 1 + item.0 'Low Power' + item.1 'High Performance' + } + } + control.599 { + iface MIXER + name 'DAC1 Volume' + value.0 96 + value.1 96 + comment { + access 'read write' + type INTEGER + count 2 + range '0 - 112' + dbmin -9999999 + dbmax 1200 + dbvalue.0 0 + dbvalue.1 0 + } + } + control.600 { + iface MIXER + name 'DAC1 Switch' + value.0 true + value.1 true + comment { + access 'read write' + type BOOLEAN + count 2 + } + } + control.601 { + iface MIXER + name 'DAC2 Volume' + value.0 96 + value.1 96 + comment { + access 'read write' + type INTEGER + count 2 + range '0 - 112' + dbmin -9999999 + dbmax 1200 + dbvalue.0 0 + dbvalue.1 0 + } + } + control.602 { + iface MIXER + name 'DAC2 Switch' + value.0 false + value.1 false + comment { + access 'read write' + type BOOLEAN + count 2 + } + } + control.603 { + iface MIXER + name 'SPKL DAC2 Volume' + value 1 + comment { + access 'read write' + type INTEGER + count 1 + range '0 - 1' + dbmin -300 + dbmax 0 + dbvalue.0 0 + } + } + control.604 { + iface MIXER + name 'SPKL DAC1 Volume' + value 1 + comment { + access 'read write' + type INTEGER + count 1 + range '0 - 1' + dbmin -300 + dbmax 0 + dbvalue.0 0 + } + } + control.605 { + iface MIXER + name 'SPKR DAC2 Volume' + value 1 + comment { + access 'read write' + type INTEGER + count 1 + range '0 - 1' + dbmin -300 + dbmax 0 + dbvalue.0 0 + } + } + control.606 { + iface MIXER + name 'SPKR DAC1 Volume' + value 1 + comment { + access 'read write' + type INTEGER + count 1 + range '0 - 1' + dbmin -300 + dbmax 0 + dbvalue.0 0 + } + } + control.607 { + iface MIXER + name 'AIF1DAC1 3D Stereo Volume' + value 0 + comment { + access 'read write' + type INTEGER + count 1 + range '0 - 15' + dbmin -1600 + dbmax 1145 + dbvalue.0 -1600 + } + } + control.608 { + iface MIXER + name 'AIF1DAC1 3D Stereo Switch' + value false + comment { + access 'read write' + type BOOLEAN + count 1 + } + } + control.609 { + iface MIXER + name 'AIF1DAC2 3D Stereo Volume' + value 0 + comment { + access 'read write' + type INTEGER + count 1 + range '0 - 15' + dbmin -1600 + dbmax 1145 + dbvalue.0 -1600 + } + } + control.610 { + iface MIXER + name 'AIF1DAC2 3D Stereo Switch' + value false + comment { + access 'read write' + type BOOLEAN + count 1 + } + } + control.611 { + iface MIXER + name 'AIF2DAC 3D Stereo Volume' + value 0 + comment { + access 'read write' + type INTEGER + count 1 + range '0 - 15' + dbmin -1600 + dbmax 1145 + dbvalue.0 -1600 + } + } + control.612 { + iface MIXER + name 'AIF2DAC 3D Stereo Switch' + value false + comment { + access 'read write' + type BOOLEAN + count 1 + } + } + control.613 { + iface MIXER + name 'MIXINL MIXOUTL Volume' + value 0 + comment { + access 'read write' + type INTEGER + count 1 + range '0 - 7' + dbmin 0 + dbmax 6300 + dbvalue.0 0 + } + } + control.614 { + iface MIXER + name 'MIXINR MIXOUTR Volume' + value 0 + comment { + access 'read write' + type INTEGER + count 1 + range '0 - 7' + dbmin 0 + dbmax 6300 + dbvalue.0 0 + } + } + control.615 { + iface MIXER + name 'AIF3 Boost Volume' + value 0 + comment { + access 'read write' + type INTEGER + count 1 + range '0 - 3' + dbmin 0 + dbmax 1800 + dbvalue.0 0 + } + } + control.616 { + iface MIXER + name 'AIF1DAC1 Noise Gate Switch' + value false + comment { + access 'read write' + type BOOLEAN + count 1 + } + } + control.617 { + iface MIXER + name 'AIF1DAC1 Noise Gate Hold Time' + value '30ms' + comment { + access 'read write' + type ENUMERATED + count 1 + item.0 '30ms' + item.1 '125ms' + item.2 '250ms' + item.3 '500ms' + } + } + control.618 { + iface MIXER + name 'AIF1DAC1 Noise Gate Threshold Volume' + value 3 + comment { + access 'read write' + type INTEGER + count 1 + range '0 - 7' + dbmin -10200 + dbmax -6000 + dbvalue.0 -8400 + } + } + control.619 { + iface MIXER + name 'AIF1DAC2 Noise Gate Switch' + value false + comment { + access 'read write' + type BOOLEAN + count 1 + } + } + control.620 { + iface MIXER + name 'AIF1DAC2 Noise Gate Hold Time' + value '30ms' + comment { + access 'read write' + type ENUMERATED + count 1 + item.0 '30ms' + item.1 '125ms' + item.2 '250ms' + item.3 '500ms' + } + } + control.621 { + iface MIXER + name 'AIF1DAC2 Noise Gate Threshold Volume' + value 3 + comment { + access 'read write' + type INTEGER + count 1 + range '0 - 7' + dbmin -10200 + dbmax -6000 + dbvalue.0 -8400 + } + } + control.622 { + iface MIXER + name 'AIF2DAC Noise Gate Switch' + value false + comment { + access 'read write' + type BOOLEAN + count 1 + } + } + control.623 { + iface MIXER + name 'AIF2DAC Noise Gate Hold Time' + value '30ms' + comment { + access 'read write' + type ENUMERATED + count 1 + item.0 '30ms' + item.1 '125ms' + item.2 '250ms' + item.3 '500ms' + } + } + control.624 { + iface MIXER + name 'AIF2DAC Noise Gate Threshold Volume' + value 3 + comment { + access 'read write' + type INTEGER + count 1 + range '0 - 7' + dbmin -10200 + dbmax -6000 + dbvalue.0 -8400 + } + } + control.625 { + iface MIXER + name 'AIF1DAC1 MBC Switch' + value false + comment { + access 'read write' + type BOOLEAN + count 1 + } + } + control.626 { + iface MIXER + name 'AIF1DAC2 MBC Switch' + value false + comment { + access 'read write' + type BOOLEAN + count 1 + } + } + control.627 { + iface MIXER + name 'AIF2DAC MBC Switch' + value false + comment { + access 'read write' + type BOOLEAN + count 1 + } + } + control.628 { + iface MIXER + name 'AIF1DAC1 VSS Switch' + value false + comment { + access 'read write' + type BOOLEAN + count 1 + } + } + control.629 { + iface MIXER + name 'AIF1DAC2 VSS Switch' + value false + comment { + access 'read write' + type BOOLEAN + count 1 + } + } + control.630 { + iface MIXER + name 'AIF2DAC VSS Switch' + value false + comment { + access 'read write' + type BOOLEAN + count 1 + } + } + control.631 { + iface MIXER + name 'AIF1DAC1 HPF1 Switch' + value false + comment { + access 'read write' + type BOOLEAN + count 1 + } + } + control.632 { + iface MIXER + name 'AIF1DAC2 HPF1 Switch' + value false + comment { + access 'read write' + type BOOLEAN + count 1 + } + } + control.633 { + iface MIXER + name 'AIF2DAC HPF1 Switch' + value false + comment { + access 'read write' + type BOOLEAN + count 1 + } + } + control.634 { + iface MIXER + name 'AIF1DAC1 HPF2 Switch' + value false + comment { + access 'read write' + type BOOLEAN + count 1 + } + } + control.635 { + iface MIXER + name 'AIF1DAC2 HPF2 Switch' + value false + comment { + access 'read write' + type BOOLEAN + count 1 + } + } + control.636 { + iface MIXER + name 'AIF2DAC HPF2 Switch' + value false + comment { + access 'read write' + type BOOLEAN + count 1 + } + } + control.637 { + iface MIXER + name 'AIF1DAC1 Enhanced EQ Switch' + value false + comment { + access 'read write' + type BOOLEAN + count 1 + } + } + control.638 { + iface MIXER + name 'AIF1DAC2 Enhanced EQ Switch' + value false + comment { + access 'read write' + type BOOLEAN + count 1 + } + } + control.639 { + iface MIXER + name 'AIF2DAC Enhanced EQ Switch' + value false + comment { + access 'read write' + type BOOLEAN + count 1 + } + } + control.640 { + iface MIXER + name 'ADCR Mux' + value DMIC + comment { + access 'read write' + type ENUMERATED + count 1 + item.0 ADC + item.1 DMIC + } + } + control.641 { + iface MIXER + name 'ADCL Mux' + value DMIC + comment { + access 'read write' + type ENUMERATED + count 1 + item.0 ADC + item.1 DMIC + } + } + control.642 { + iface MIXER + name 'Right Headphone Mux' + value Mixer + comment { + access 'read write' + type ENUMERATED + count 1 + item.0 Mixer + item.1 DAC + } + } + control.643 { + iface MIXER + name 'Left Headphone Mux' + value Mixer + comment { + access 'read write' + type ENUMERATED + count 1 + item.0 Mixer + item.1 DAC + } + } + control.644 { + iface MIXER + name 'SPKR DAC2 Switch' + value false + comment { + access 'read write' + type BOOLEAN + count 1 + } + } + control.645 { + iface MIXER + name 'SPKR Input Switch' + value false + comment { + access 'read write' + type BOOLEAN + count 1 + } + } + control.646 { + iface MIXER + name 'SPKR IN1RP Switch' + value false + comment { + access 'read write' + type BOOLEAN + count 1 + } + } + control.647 { + iface MIXER + name 'SPKR Output Switch' + value false + comment { + access 'read write' + type BOOLEAN + count 1 + } + } + control.648 { + iface MIXER + name 'SPKR DAC1 Switch' + value false + comment { + access 'read write' + type BOOLEAN + count 1 + } + } + control.649 { + iface MIXER + name 'SPKL DAC2 Switch' + value false + comment { + access 'read write' + type BOOLEAN + count 1 + } + } + control.650 { + iface MIXER + name 'SPKL Input Switch' + value false + comment { + access 'read write' + type BOOLEAN + count 1 + } + } + control.651 { + iface MIXER + name 'SPKL IN1LP Switch' + value false + comment { + access 'read write' + type BOOLEAN + count 1 + } + } + control.652 { + iface MIXER + name 'SPKL Output Switch' + value false + comment { + access 'read write' + type BOOLEAN + count 1 + } + } + control.653 { + iface MIXER + name 'SPKL DAC1 Switch' + value true + comment { + access 'read write' + type BOOLEAN + count 1 + } + } + control.654 { + iface MIXER + name 'AIF3ADC Mux' + value AIF1ADCDAT + comment { + access 'read write' + type ENUMERATED + count 1 + item.0 AIF1ADCDAT + item.1 AIF2ADCDAT + item.2 AIF2DACDAT + item.3 'Mono PCM' + } + } + control.655 { + iface MIXER + name 'AIF2DACR Mux' + value AIF2 + comment { + access 'read write' + type ENUMERATED + count 1 + item.0 AIF2 + item.1 AIF3 + } + } + control.656 { + iface MIXER + name 'AIF2DACL Mux' + value AIF2 + comment { + access 'read write' + type ENUMERATED + count 1 + item.0 AIF2 + item.1 AIF3 + } + } + control.657 { + iface MIXER + name 'Mono PCM Out Mux' + value None + comment { + access 'read write' + type ENUMERATED + count 1 + item.0 None + item.1 AIF2ADCL + item.2 AIF2ADCR + } + } + control.658 { + iface MIXER + name 'AIF2 Loopback' + value None + comment { + access 'read write' + type ENUMERATED + count 1 + item.0 None + item.1 ADCDAT + } + } + control.659 { + iface MIXER + name 'AIF1 Loopback' + value None + comment { + access 'read write' + type ENUMERATED + count 1 + item.0 None + item.1 ADCDAT + } + } + control.660 { + iface MIXER + name 'AIF2ADC Mux' + value AIF2ADCDAT + comment { + access 'read write' + type ENUMERATED + count 1 + item.0 AIF2ADCDAT + item.1 AIF3DACDAT + } + } + control.661 { + iface MIXER + name 'AIF2DAC Mux' + value AIF2DACDAT + comment { + access 'read write' + type ENUMERATED + count 1 + item.0 AIF2DACDAT + item.1 AIF3DACDAT + } + } + control.662 { + iface MIXER + name 'AIF1DAC Mux' + value AIF1DACDAT + comment { + access 'read write' + type ENUMERATED + count 1 + item.0 AIF1DACDAT + item.1 AIF3DACDAT + } + } + control.663 { + iface MIXER + name 'DAC1R Mixer Right Sidetone Switch' + value false + comment { + access 'read write' + type BOOLEAN + count 1 + } + } + control.664 { + iface MIXER + name 'DAC1R Mixer Left Sidetone Switch' + value false + comment { + access 'read write' + type BOOLEAN + count 1 + } + } + control.665 { + iface MIXER + name 'DAC1R Mixer AIF2 Switch' + value false + comment { + access 'read write' + type BOOLEAN + count 1 + } + } + control.666 { + iface MIXER + name 'DAC1R Mixer AIF1.2 Switch' + value false + comment { + access 'read write' + type BOOLEAN + count 1 + } + } + control.667 { + iface MIXER + name 'DAC1R Mixer AIF1.1 Switch' + value true + comment { + access 'read write' + type BOOLEAN + count 1 + } + } + control.668 { + iface MIXER + name 'DAC1L Mixer Right Sidetone Switch' + value false + comment { + access 'read write' + type BOOLEAN + count 1 + } + } + control.669 { + iface MIXER + name 'DAC1L Mixer Left Sidetone Switch' + value false + comment { + access 'read write' + type BOOLEAN + count 1 + } + } + control.670 { + iface MIXER + name 'DAC1L Mixer AIF2 Switch' + value false + comment { + access 'read write' + type BOOLEAN + count 1 + } + } + control.671 { + iface MIXER + name 'DAC1L Mixer AIF1.2 Switch' + value false + comment { + access 'read write' + type BOOLEAN + count 1 + } + } + control.672 { + iface MIXER + name 'DAC1L Mixer AIF1.1 Switch' + value true + comment { + access 'read write' + type BOOLEAN + count 1 + } + } + control.673 { + iface MIXER + name 'Right Sidetone' + value ADC/DMIC1 + comment { + access 'read write' + type ENUMERATED + count 1 + item.0 ADC/DMIC1 + item.1 DMIC2 + } + } + control.674 { + iface MIXER + name 'Left Sidetone' + value ADC/DMIC1 + comment { + access 'read write' + type ENUMERATED + count 1 + item.0 ADC/DMIC1 + item.1 DMIC2 + } + } + control.675 { + iface MIXER + name 'AIF2DAC2R Mixer Right Sidetone Switch' + value false + comment { + access 'read write' + type BOOLEAN + count 1 + } + } + control.676 { + iface MIXER + name 'AIF2DAC2R Mixer Left Sidetone Switch' + value false + comment { + access 'read write' + type BOOLEAN + count 1 + } + } + control.677 { + iface MIXER + name 'AIF2DAC2R Mixer AIF2 Switch' + value false + comment { + access 'read write' + type BOOLEAN + count 1 + } + } + control.678 { + iface MIXER + name 'AIF2DAC2R Mixer AIF1.2 Switch' + value false + comment { + access 'read write' + type BOOLEAN + count 1 + } + } + control.679 { + iface MIXER + name 'AIF2DAC2R Mixer AIF1.1 Switch' + value false + comment { + access 'read write' + type BOOLEAN + count 1 + } + } + control.680 { + iface MIXER + name 'AIF2DAC2L Mixer Right Sidetone Switch' + value false + comment { + access 'read write' + type BOOLEAN + count 1 + } + } + control.681 { + iface MIXER + name 'AIF2DAC2L Mixer Left Sidetone Switch' + value false + comment { + access 'read write' + type BOOLEAN + count 1 + } + } + control.682 { + iface MIXER + name 'AIF2DAC2L Mixer AIF2 Switch' + value false + comment { + access 'read write' + type BOOLEAN + count 1 + } + } + control.683 { + iface MIXER + name 'AIF2DAC2L Mixer AIF1.2 Switch' + value false + comment { + access 'read write' + type BOOLEAN + count 1 + } + } + control.684 { + iface MIXER + name 'AIF2DAC2L Mixer AIF1.1 Switch' + value false + comment { + access 'read write' + type BOOLEAN + count 1 + } + } + control.685 { + iface MIXER + name 'AIF1ADC2R Mixer DMIC Switch' + value false + comment { + access 'read write' + type BOOLEAN + count 1 + } + } + control.686 { + iface MIXER + name 'AIF1ADC2R Mixer AIF2 Switch' + value false + comment { + access 'read write' + type BOOLEAN + count 1 + } + } + control.687 { + iface MIXER + name 'AIF1ADC2L Mixer DMIC Switch' + value false + comment { + access 'read write' + type BOOLEAN + count 1 + } + } + control.688 { + iface MIXER + name 'AIF1ADC2L Mixer AIF2 Switch' + value false + comment { + access 'read write' + type BOOLEAN + count 1 + } + } + control.689 { + iface MIXER + name 'AIF1ADC1R Mixer ADC/DMIC Switch' + value true + comment { + access 'read write' + type BOOLEAN + count 1 + } + } + control.690 { + iface MIXER + name 'AIF1ADC1R Mixer AIF2 Switch' + value false + comment { + access 'read write' + type BOOLEAN + count 1 + } + } + control.691 { + iface MIXER + name 'AIF1ADC1L Mixer ADC/DMIC Switch' + value true + comment { + access 'read write' + type BOOLEAN + count 1 + } + } + control.692 { + iface MIXER + name 'AIF1ADC1L Mixer AIF2 Switch' + value false + comment { + access 'read write' + type BOOLEAN + count 1 + } + } + control.693 { + iface MIXER + name 'LINEOUT2P Mixer Right Output Switch' + value false + comment { + access 'read write' + type BOOLEAN + count 1 + } + } + control.694 { + iface MIXER + name 'LINEOUT2N Mixer Left Output Switch' + value false + comment { + access 'read write' + type BOOLEAN + count 1 + } + } + control.695 { + iface MIXER + name 'LINEOUT2N Mixer Right Output Switch' + value false + comment { + access 'read write' + type BOOLEAN + count 1 + } + } + control.696 { + iface MIXER + name 'LINEOUT1P Mixer Left Output Switch' + value false + comment { + access 'read write' + type BOOLEAN + count 1 + } + } + control.697 { + iface MIXER + name 'LINEOUT1N Mixer Left Output Switch' + value false + comment { + access 'read write' + type BOOLEAN + count 1 + } + } + control.698 { + iface MIXER + name 'LINEOUT1N Mixer Right Output Switch' + value false + comment { + access 'read write' + type BOOLEAN + count 1 + } + } + control.699 { + iface MIXER + name 'SPKR Boost Direct Voice Switch' + value false + comment { + access 'read write' + type BOOLEAN + count 1 + } + } + control.700 { + iface MIXER + name 'SPKR Boost SPKL Switch' + value false + comment { + access 'read write' + type BOOLEAN + count 1 + } + } + control.701 { + iface MIXER + name 'SPKR Boost SPKR Switch' + value true + comment { + access 'read write' + type BOOLEAN + count 1 + } + } + control.702 { + iface MIXER + name 'SPKL Boost Direct Voice Switch' + value false + comment { + access 'read write' + type BOOLEAN + count 1 + } + } + control.703 { + iface MIXER + name 'SPKL Boost SPKL Switch' + value true + comment { + access 'read write' + type BOOLEAN + count 1 + } + } + control.704 { + iface MIXER + name 'SPKL Boost SPKR Switch' + value false + comment { + access 'read write' + type BOOLEAN + count 1 + } + } + control.705 { + iface MIXER + name 'Earpiece Mixer Direct Voice Switch' + value false + comment { + access 'read write' + type BOOLEAN + count 1 + } + } + control.706 { + iface MIXER + name 'Earpiece Mixer Left Output Switch' + value false + comment { + access 'read write' + type BOOLEAN + count 1 + } + } + control.707 { + iface MIXER + name 'Earpiece Mixer Right Output Switch' + value false + comment { + access 'read write' + type BOOLEAN + count 1 + } + } + control.708 { + iface MIXER + name 'Right Output Mixer Left Input Switch' + value false + comment { + access 'read write' + type BOOLEAN + count 1 + } + } + control.709 { + iface MIXER + name 'Right Output Mixer Right Input Switch' + value false + comment { + access 'read write' + type BOOLEAN + count 1 + } + } + control.710 { + iface MIXER + name 'Right Output Mixer IN2LN Switch' + value false + comment { + access 'read write' + type BOOLEAN + count 1 + } + } + control.711 { + iface MIXER + name 'Right Output Mixer IN2RN Switch' + value false + comment { + access 'read write' + type BOOLEAN + count 1 + } + } + control.712 { + iface MIXER + name 'Right Output Mixer IN1L Switch' + value false + comment { + access 'read write' + type BOOLEAN + count 1 + } + } + control.713 { + iface MIXER + name 'Right Output Mixer IN1R Switch' + value false + comment { + access 'read write' + type BOOLEAN + count 1 + } + } + control.714 { + iface MIXER + name 'Right Output Mixer IN2RP Switch' + value false + comment { + access 'read write' + type BOOLEAN + count 1 + } + } + control.715 { + iface MIXER + name 'Right Output Mixer DAC Switch' + value false + comment { + access 'read write' + type BOOLEAN + count 1 + } + } + control.716 { + iface MIXER + name 'Left Output Mixer Right Input Switch' + value false + comment { + access 'read write' + type BOOLEAN + count 1 + } + } + control.717 { + iface MIXER + name 'Left Output Mixer Left Input Switch' + value false + comment { + access 'read write' + type BOOLEAN + count 1 + } + } + control.718 { + iface MIXER + name 'Left Output Mixer IN2RN Switch' + value false + comment { + access 'read write' + type BOOLEAN + count 1 + } + } + control.719 { + iface MIXER + name 'Left Output Mixer IN2LN Switch' + value false + comment { + access 'read write' + type BOOLEAN + count 1 + } + } + control.720 { + iface MIXER + name 'Left Output Mixer IN2LP Switch' + value false + comment { + access 'read write' + type BOOLEAN + count 1 + } + } + control.721 { + iface MIXER + name 'Left Output Mixer IN1R Switch' + value false + comment { + access 'read write' + type BOOLEAN + count 1 + } + } + control.722 { + iface MIXER + name 'Left Output Mixer IN1L Switch' + value false + comment { + access 'read write' + type BOOLEAN + count 1 + } + } + control.723 { + iface MIXER + name 'Left Output Mixer DAC Switch' + value true + comment { + access 'read write' + type BOOLEAN + count 1 + } + } + control.724 { + iface MIXER + name 'MIXINR IN2R Switch' + value false + comment { + access 'read write' + type BOOLEAN + count 1 + } + } + control.725 { + iface MIXER + name 'MIXINR IN1R Switch' + value false + comment { + access 'read write' + type BOOLEAN + count 1 + } + } + control.726 { + iface MIXER + name 'MIXINL IN2L Switch' + value false + comment { + access 'read write' + type BOOLEAN + count 1 + } + } + control.727 { + iface MIXER + name 'MIXINL IN1L Switch' + value false + comment { + access 'read write' + type BOOLEAN + count 1 + } + } + control.728 { + iface MIXER + name 'IN2R PGA IN2RP Switch' + value false + comment { + access 'read write' + type BOOLEAN + count 1 + } + } + control.729 { + iface MIXER + name 'IN2R PGA IN2RN Switch' + value false + comment { + access 'read write' + type BOOLEAN + count 1 + } + } + control.730 { + iface MIXER + name 'IN2L PGA IN2LP Switch' + value false + comment { + access 'read write' + type BOOLEAN + count 1 + } + } + control.731 { + iface MIXER + name 'IN2L PGA IN2LN Switch' + value false + comment { + access 'read write' + type BOOLEAN + count 1 + } + } + control.732 { + iface MIXER + name 'IN1R PGA IN1RP Switch' + value false + comment { + access 'read write' + type BOOLEAN + count 1 + } + } + control.733 { + iface MIXER + name 'IN1R PGA IN1RN Switch' + value false + comment { + access 'read write' + type BOOLEAN + count 1 + } + } + control.734 { + iface MIXER + name 'IN1L PGA IN1LP Switch' + value false + comment { + access 'read write' + type BOOLEAN + count 1 + } + } + control.735 { + iface MIXER + name 'IN1L PGA IN1LN Switch' + value false + comment { + access 'read write' + type BOOLEAN + count 1 + } + } +} +state.dummyaudio { + control.1 { + iface MIXER + name 'ssp1_out mux 0' + value fm + comment { + access 'read write' + type ENUMERATED + count 1 + item.0 fm + item.1 bt + } + } + control.2 { + iface MIXER + name 'aware_out aware 0 switch' + value false + comment { + access 'read write' + type BOOLEAN + count 1 + } + } + control.3 { + iface MIXER + name 'modem_out mix 0 modem_in' + value false + comment { + access 'read write' + type BOOLEAN + count 1 + } + } + control.4 { + iface MIXER + name 'modem_out mix 0 bt_in' + value false + comment { + access 'read write' + type BOOLEAN + count 1 + } + } + control.5 { + iface MIXER + name 'modem_out mix 0 codec_in0' + value false + comment { + access 'read write' + type BOOLEAN + count 1 + } + } + control.6 { + iface MIXER + name 'modem_out mix 0 codec_in1' + value false + comment { + access 'read write' + type BOOLEAN + count 1 + } + } + control.7 { + iface MIXER + name 'modem_out mix 0 sprot_loop_in' + value false + comment { + access 'read write' + type BOOLEAN + count 1 + } + } + control.8 { + iface MIXER + name 'modem_out mix 0 media_loop1_in' + value false + comment { + access 'read write' + type BOOLEAN + count 1 + } + } + control.9 { + iface MIXER + name 'modem_out mix 0 media_loop2_in' + value false + comment { + access 'read write' + type BOOLEAN + count 1 + } + } + control.10 { + iface MIXER + name 'modem_out mix 0 sidetone_in' + value false + comment { + access 'read write' + type BOOLEAN + count 1 + } + } + control.11 { + iface MIXER + name 'modem_out mix 0 txspeech_in' + value false + comment { + access 'read write' + type BOOLEAN + count 1 + } + } + control.12 { + iface MIXER + name 'modem_out mix 0 speech_in' + value false + comment { + access 'read write' + type BOOLEAN + count 1 + } + } + control.13 { + iface MIXER + name 'modem_out mix 0 tone_in' + value false + comment { + access 'read write' + type BOOLEAN + count 1 + } + } + control.14 { + iface MIXER + name 'modem_out mix 0 voip_in' + value false + comment { + access 'read write' + type BOOLEAN + count 1 + } + } + control.15 { + iface MIXER + name 'modem_out mix 0 pcm0_in' + value false + comment { + access 'read write' + type BOOLEAN + count 1 + } + } + control.16 { + iface MIXER + name 'modem_out mix 0 pcm1_in' + value false + comment { + access 'read write' + type BOOLEAN + count 1 + } + } + control.17 { + iface MIXER + name 'modem_out mix 0 low_pcm0_in' + value false + comment { + access 'read write' + type BOOLEAN + count 1 + } + } + control.18 { + iface MIXER + name 'modem_out mix 0 fm_in' + value false + comment { + access 'read write' + type BOOLEAN + count 1 + } + } + control.19 { + iface MIXER + name 'fm_out mix 0 modem_in' + value false + comment { + access 'read write' + type BOOLEAN + count 1 + } + } + control.20 { + iface MIXER + name 'fm_out mix 0 bt_in' + value false + comment { + access 'read write' + type BOOLEAN + count 1 + } + } + control.21 { + iface MIXER + name 'fm_out mix 0 codec_in0' + value false + comment { + access 'read write' + type BOOLEAN + count 1 + } + } + control.22 { + iface MIXER + name 'fm_out mix 0 codec_in1' + value false + comment { + access 'read write' + type BOOLEAN + count 1 + } + } + control.23 { + iface MIXER + name 'fm_out mix 0 sprot_loop_in' + value false + comment { + access 'read write' + type BOOLEAN + count 1 + } + } + control.24 { + iface MIXER + name 'fm_out mix 0 media_loop1_in' + value false + comment { + access 'read write' + type BOOLEAN + count 1 + } + } + control.25 { + iface MIXER + name 'fm_out mix 0 media_loop2_in' + value false + comment { + access 'read write' + type BOOLEAN + count 1 + } + } + control.26 { + iface MIXER + name 'fm_out mix 0 sidetone_in' + value false + comment { + access 'read write' + type BOOLEAN + count 1 + } + } + control.27 { + iface MIXER + name 'fm_out mix 0 txspeech_in' + value false + comment { + access 'read write' + type BOOLEAN + count 1 + } + } + control.28 { + iface MIXER + name 'fm_out mix 0 speech_in' + value false + comment { + access 'read write' + type BOOLEAN + count 1 + } + } + control.29 { + iface MIXER + name 'fm_out mix 0 tone_in' + value false + comment { + access 'read write' + type BOOLEAN + count 1 + } + } + control.30 { + iface MIXER + name 'fm_out mix 0 voip_in' + value false + comment { + access 'read write' + type BOOLEAN + count 1 + } + } + control.31 { + iface MIXER + name 'fm_out mix 0 pcm0_in' + value false + comment { + access 'read write' + type BOOLEAN + count 1 + } + } + control.32 { + iface MIXER + name 'fm_out mix 0 pcm1_in' + value false + comment { + access 'read write' + type BOOLEAN + count 1 + } + } + control.33 { + iface MIXER + name 'fm_out mix 0 low_pcm0_in' + value false + comment { + access 'read write' + type BOOLEAN + count 1 + } + } + control.34 { + iface MIXER + name 'fm_out mix 0 fm_in' + value false + comment { + access 'read write' + type BOOLEAN + count 1 + } + } + control.35 { + iface MIXER + name 'bt_out mix 0 modem_in' + value false + comment { + access 'read write' + type BOOLEAN + count 1 + } + } + control.36 { + iface MIXER + name 'bt_out mix 0 bt_in' + value false + comment { + access 'read write' + type BOOLEAN + count 1 + } + } + control.37 { + iface MIXER + name 'bt_out mix 0 codec_in0' + value false + comment { + access 'read write' + type BOOLEAN + count 1 + } + } + control.38 { + iface MIXER + name 'bt_out mix 0 codec_in1' + value false + comment { + access 'read write' + type BOOLEAN + count 1 + } + } + control.39 { + iface MIXER + name 'bt_out mix 0 sprot_loop_in' + value false + comment { + access 'read write' + type BOOLEAN + count 1 + } + } + control.40 { + iface MIXER + name 'bt_out mix 0 media_loop1_in' + value false + comment { + access 'read write' + type BOOLEAN + count 1 + } + } + control.41 { + iface MIXER + name 'bt_out mix 0 media_loop2_in' + value false + comment { + access 'read write' + type BOOLEAN + count 1 + } + } + control.42 { + iface MIXER + name 'bt_out mix 0 sidetone_in' + value false + comment { + access 'read write' + type BOOLEAN + count 1 + } + } + control.43 { + iface MIXER + name 'bt_out mix 0 txspeech_in' + value false + comment { + access 'read write' + type BOOLEAN + count 1 + } + } + control.44 { + iface MIXER + name 'bt_out mix 0 speech_in' + value false + comment { + access 'read write' + type BOOLEAN + count 1 + } + } + control.45 { + iface MIXER + name 'bt_out mix 0 tone_in' + value false + comment { + access 'read write' + type BOOLEAN + count 1 + } + } + control.46 { + iface MIXER + name 'bt_out mix 0 voip_in' + value false + comment { + access 'read write' + type BOOLEAN + count 1 + } + } + control.47 { + iface MIXER + name 'bt_out mix 0 pcm0_in' + value false + comment { + access 'read write' + type BOOLEAN + count 1 + } + } + control.48 { + iface MIXER + name 'bt_out mix 0 pcm1_in' + value false + comment { + access 'read write' + type BOOLEAN + count 1 + } + } + control.49 { + iface MIXER + name 'bt_out mix 0 low_pcm0_in' + value false + comment { + access 'read write' + type BOOLEAN + count 1 + } + } + control.50 { + iface MIXER + name 'bt_out mix 0 fm_in' + value false + comment { + access 'read write' + type BOOLEAN + count 1 + } + } + control.51 { + iface MIXER + name 'codec_out1 mix 0 modem_in' + value false + comment { + access 'read write' + type BOOLEAN + count 1 + } + } + control.52 { + iface MIXER + name 'codec_out1 mix 0 bt_in' + value false + comment { + access 'read write' + type BOOLEAN + count 1 + } + } + control.53 { + iface MIXER + name 'codec_out1 mix 0 codec_in0' + value false + comment { + access 'read write' + type BOOLEAN + count 1 + } + } + control.54 { + iface MIXER + name 'codec_out1 mix 0 codec_in1' + value false + comment { + access 'read write' + type BOOLEAN + count 1 + } + } + control.55 { + iface MIXER + name 'codec_out1 mix 0 sprot_loop_in' + value false + comment { + access 'read write' + type BOOLEAN + count 1 + } + } + control.56 { + iface MIXER + name 'codec_out1 mix 0 media_loop1_in' + value false + comment { + access 'read write' + type BOOLEAN + count 1 + } + } + control.57 { + iface MIXER + name 'codec_out1 mix 0 media_loop2_in' + value false + comment { + access 'read write' + type BOOLEAN + count 1 + } + } + control.58 { + iface MIXER + name 'codec_out1 mix 0 sidetone_in' + value false + comment { + access 'read write' + type BOOLEAN + count 1 + } + } + control.59 { + iface MIXER + name 'codec_out1 mix 0 txspeech_in' + value false + comment { + access 'read write' + type BOOLEAN + count 1 + } + } + control.60 { + iface MIXER + name 'codec_out1 mix 0 speech_in' + value false + comment { + access 'read write' + type BOOLEAN + count 1 + } + } + control.61 { + iface MIXER + name 'codec_out1 mix 0 tone_in' + value false + comment { + access 'read write' + type BOOLEAN + count 1 + } + } + control.62 { + iface MIXER + name 'codec_out1 mix 0 voip_in' + value false + comment { + access 'read write' + type BOOLEAN + count 1 + } + } + control.63 { + iface MIXER + name 'codec_out1 mix 0 pcm0_in' + value true + comment { + access 'read write' + type BOOLEAN + count 1 + } + } + control.64 { + iface MIXER + name 'codec_out1 mix 0 pcm1_in' + value false + comment { + access 'read write' + type BOOLEAN + count 1 + } + } + control.65 { + iface MIXER + name 'codec_out1 mix 0 low_pcm0_in' + value false + comment { + access 'read write' + type BOOLEAN + count 1 + } + } + control.66 { + iface MIXER + name 'codec_out1 mix 0 fm_in' + value false + comment { + access 'read write' + type BOOLEAN + count 1 + } + } + control.67 { + iface MIXER + name 'codec_out0 mix 0 modem_in' + value false + comment { + access 'read write' + type BOOLEAN + count 1 + } + } + control.68 { + iface MIXER + name 'codec_out0 mix 0 bt_in' + value false + comment { + access 'read write' + type BOOLEAN + count 1 + } + } + control.69 { + iface MIXER + name 'codec_out0 mix 0 codec_in0' + value false + comment { + access 'read write' + type BOOLEAN + count 1 + } + } + control.70 { + iface MIXER + name 'codec_out0 mix 0 codec_in1' + value false + comment { + access 'read write' + type BOOLEAN + count 1 + } + } + control.71 { + iface MIXER + name 'codec_out0 mix 0 sprot_loop_in' + value false + comment { + access 'read write' + type BOOLEAN + count 1 + } + } + control.72 { + iface MIXER + name 'codec_out0 mix 0 media_loop1_in' + value false + comment { + access 'read write' + type BOOLEAN + count 1 + } + } + control.73 { + iface MIXER + name 'codec_out0 mix 0 media_loop2_in' + value false + comment { + access 'read write' + type BOOLEAN + count 1 + } + } + control.74 { + iface MIXER + name 'codec_out0 mix 0 sidetone_in' + value false + comment { + access 'read write' + type BOOLEAN + count 1 + } + } + control.75 { + iface MIXER + name 'codec_out0 mix 0 txspeech_in' + value false + comment { + access 'read write' + type BOOLEAN + count 1 + } + } + control.76 { + iface MIXER + name 'codec_out0 mix 0 speech_in' + value false + comment { + access 'read write' + type BOOLEAN + count 1 + } + } + control.77 { + iface MIXER + name 'codec_out0 mix 0 tone_in' + value false + comment { + access 'read write' + type BOOLEAN + count 1 + } + } + control.78 { + iface MIXER + name 'codec_out0 mix 0 voip_in' + value false + comment { + access 'read write' + type BOOLEAN + count 1 + } + } + control.79 { + iface MIXER + name 'codec_out0 mix 0 pcm0_in' + value true + comment { + access 'read write' + type BOOLEAN + count 1 + } + } + control.80 { + iface MIXER + name 'codec_out0 mix 0 pcm1_in' + value false + comment { + access 'read write' + type BOOLEAN + count 1 + } + } + control.81 { + iface MIXER + name 'codec_out0 mix 0 low_pcm0_in' + value false + comment { + access 'read write' + type BOOLEAN + count 1 + } + } + control.82 { + iface MIXER + name 'codec_out0 mix 0 fm_in' + value false + comment { + access 'read write' + type BOOLEAN + count 1 + } + } + control.83 { + iface MIXER + name 'rxspeech_out mix 0 modem_in' + value false + comment { + access 'read write' + type BOOLEAN + count 1 + } + } + control.84 { + iface MIXER + name 'rxspeech_out mix 0 bt_in' + value false + comment { + access 'read write' + type BOOLEAN + count 1 + } + } + control.85 { + iface MIXER + name 'rxspeech_out mix 0 codec_in0' + value false + comment { + access 'read write' + type BOOLEAN + count 1 + } + } + control.86 { + iface MIXER + name 'rxspeech_out mix 0 codec_in1' + value false + comment { + access 'read write' + type BOOLEAN + count 1 + } + } + control.87 { + iface MIXER + name 'rxspeech_out mix 0 sprot_loop_in' + value false + comment { + access 'read write' + type BOOLEAN + count 1 + } + } + control.88 { + iface MIXER + name 'rxspeech_out mix 0 media_loop1_in' + value false + comment { + access 'read write' + type BOOLEAN + count 1 + } + } + control.89 { + iface MIXER + name 'rxspeech_out mix 0 media_loop2_in' + value false + comment { + access 'read write' + type BOOLEAN + count 1 + } + } + control.90 { + iface MIXER + name 'rxspeech_out mix 0 sidetone_in' + value false + comment { + access 'read write' + type BOOLEAN + count 1 + } + } + control.91 { + iface MIXER + name 'rxspeech_out mix 0 txspeech_in' + value false + comment { + access 'read write' + type BOOLEAN + count 1 + } + } + control.92 { + iface MIXER + name 'rxspeech_out mix 0 speech_in' + value false + comment { + access 'read write' + type BOOLEAN + count 1 + } + } + control.93 { + iface MIXER + name 'rxspeech_out mix 0 tone_in' + value false + comment { + access 'read write' + type BOOLEAN + count 1 + } + } + control.94 { + iface MIXER + name 'rxspeech_out mix 0 voip_in' + value false + comment { + access 'read write' + type BOOLEAN + count 1 + } + } + control.95 { + iface MIXER + name 'rxspeech_out mix 0 pcm0_in' + value false + comment { + access 'read write' + type BOOLEAN + count 1 + } + } + control.96 { + iface MIXER + name 'rxspeech_out mix 0 pcm1_in' + value false + comment { + access 'read write' + type BOOLEAN + count 1 + } + } + control.97 { + iface MIXER + name 'rxspeech_out mix 0 low_pcm0_in' + value false + comment { + access 'read write' + type BOOLEAN + count 1 + } + } + control.98 { + iface MIXER + name 'rxspeech_out mix 0 fm_in' + value false + comment { + access 'read write' + type BOOLEAN + count 1 + } + } + control.99 { + iface MIXER + name 'speech_out mix 0 modem_in' + value false + comment { + access 'read write' + type BOOLEAN + count 1 + } + } + control.100 { + iface MIXER + name 'speech_out mix 0 bt_in' + value false + comment { + access 'read write' + type BOOLEAN + count 1 + } + } + control.101 { + iface MIXER + name 'speech_out mix 0 codec_in0' + value false + comment { + access 'read write' + type BOOLEAN + count 1 + } + } + control.102 { + iface MIXER + name 'speech_out mix 0 codec_in1' + value false + comment { + access 'read write' + type BOOLEAN + count 1 + } + } + control.103 { + iface MIXER + name 'speech_out mix 0 sprot_loop_in' + value false + comment { + access 'read write' + type BOOLEAN + count 1 + } + } + control.104 { + iface MIXER + name 'speech_out mix 0 media_loop1_in' + value false + comment { + access 'read write' + type BOOLEAN + count 1 + } + } + control.105 { + iface MIXER + name 'speech_out mix 0 media_loop2_in' + value false + comment { + access 'read write' + type BOOLEAN + count 1 + } + } + control.106 { + iface MIXER + name 'speech_out mix 0 sidetone_in' + value false + comment { + access 'read write' + type BOOLEAN + count 1 + } + } + control.107 { + iface MIXER + name 'speech_out mix 0 txspeech_in' + value false + comment { + access 'read write' + type BOOLEAN + count 1 + } + } + control.108 { + iface MIXER + name 'speech_out mix 0 speech_in' + value false + comment { + access 'read write' + type BOOLEAN + count 1 + } + } + control.109 { + iface MIXER + name 'speech_out mix 0 tone_in' + value false + comment { + access 'read write' + type BOOLEAN + count 1 + } + } + control.110 { + iface MIXER + name 'speech_out mix 0 voip_in' + value false + comment { + access 'read write' + type BOOLEAN + count 1 + } + } + control.111 { + iface MIXER + name 'speech_out mix 0 pcm0_in' + value false + comment { + access 'read write' + type BOOLEAN + count 1 + } + } + control.112 { + iface MIXER + name 'speech_out mix 0 pcm1_in' + value false + comment { + access 'read write' + type BOOLEAN + count 1 + } + } + control.113 { + iface MIXER + name 'speech_out mix 0 low_pcm0_in' + value false + comment { + access 'read write' + type BOOLEAN + count 1 + } + } + control.114 { + iface MIXER + name 'speech_out mix 0 fm_in' + value false + comment { + access 'read write' + type BOOLEAN + count 1 + } + } + control.115 { + iface MIXER + name 'hf_out mix 0 modem_in' + value false + comment { + access 'read write' + type BOOLEAN + count 1 + } + } + control.116 { + iface MIXER + name 'hf_out mix 0 bt_in' + value false + comment { + access 'read write' + type BOOLEAN + count 1 + } + } + control.117 { + iface MIXER + name 'hf_out mix 0 codec_in0' + value false + comment { + access 'read write' + type BOOLEAN + count 1 + } + } + control.118 { + iface MIXER + name 'hf_out mix 0 codec_in1' + value false + comment { + access 'read write' + type BOOLEAN + count 1 + } + } + control.119 { + iface MIXER + name 'hf_out mix 0 sprot_loop_in' + value false + comment { + access 'read write' + type BOOLEAN + count 1 + } + } + control.120 { + iface MIXER + name 'hf_out mix 0 media_loop1_in' + value false + comment { + access 'read write' + type BOOLEAN + count 1 + } + } + control.121 { + iface MIXER + name 'hf_out mix 0 media_loop2_in' + value false + comment { + access 'read write' + type BOOLEAN + count 1 + } + } + control.122 { + iface MIXER + name 'hf_out mix 0 sidetone_in' + value false + comment { + access 'read write' + type BOOLEAN + count 1 + } + } + control.123 { + iface MIXER + name 'hf_out mix 0 txspeech_in' + value false + comment { + access 'read write' + type BOOLEAN + count 1 + } + } + control.124 { + iface MIXER + name 'hf_out mix 0 speech_in' + value false + comment { + access 'read write' + type BOOLEAN + count 1 + } + } + control.125 { + iface MIXER + name 'hf_out mix 0 tone_in' + value false + comment { + access 'read write' + type BOOLEAN + count 1 + } + } + control.126 { + iface MIXER + name 'hf_out mix 0 voip_in' + value false + comment { + access 'read write' + type BOOLEAN + count 1 + } + } + control.127 { + iface MIXER + name 'hf_out mix 0 pcm0_in' + value false + comment { + access 'read write' + type BOOLEAN + count 1 + } + } + control.128 { + iface MIXER + name 'hf_out mix 0 pcm1_in' + value false + comment { + access 'read write' + type BOOLEAN + count 1 + } + } + control.129 { + iface MIXER + name 'hf_out mix 0 low_pcm0_in' + value false + comment { + access 'read write' + type BOOLEAN + count 1 + } + } + control.130 { + iface MIXER + name 'hf_out mix 0 fm_in' + value false + comment { + access 'read write' + type BOOLEAN + count 1 + } + } + control.131 { + iface MIXER + name 'hf_sns_out mix 0 modem_in' + value false + comment { + access 'read write' + type BOOLEAN + count 1 + } + } + control.132 { + iface MIXER + name 'hf_sns_out mix 0 bt_in' + value false + comment { + access 'read write' + type BOOLEAN + count 1 + } + } + control.133 { + iface MIXER + name 'hf_sns_out mix 0 codec_in0' + value false + comment { + access 'read write' + type BOOLEAN + count 1 + } + } + control.134 { + iface MIXER + name 'hf_sns_out mix 0 codec_in1' + value false + comment { + access 'read write' + type BOOLEAN + count 1 + } + } + control.135 { + iface MIXER + name 'hf_sns_out mix 0 sprot_loop_in' + value false + comment { + access 'read write' + type BOOLEAN + count 1 + } + } + control.136 { + iface MIXER + name 'hf_sns_out mix 0 media_loop1_in' + value false + comment { + access 'read write' + type BOOLEAN + count 1 + } + } + control.137 { + iface MIXER + name 'hf_sns_out mix 0 media_loop2_in' + value false + comment { + access 'read write' + type BOOLEAN + count 1 + } + } + control.138 { + iface MIXER + name 'hf_sns_out mix 0 sidetone_in' + value false + comment { + access 'read write' + type BOOLEAN + count 1 + } + } + control.139 { + iface MIXER + name 'hf_sns_out mix 0 txspeech_in' + value false + comment { + access 'read write' + type BOOLEAN + count 1 + } + } + control.140 { + iface MIXER + name 'hf_sns_out mix 0 speech_in' + value false + comment { + access 'read write' + type BOOLEAN + count 1 + } + } + control.141 { + iface MIXER + name 'hf_sns_out mix 0 tone_in' + value false + comment { + access 'read write' + type BOOLEAN + count 1 + } + } + control.142 { + iface MIXER + name 'hf_sns_out mix 0 voip_in' + value false + comment { + access 'read write' + type BOOLEAN + count 1 + } + } + control.143 { + iface MIXER + name 'hf_sns_out mix 0 pcm0_in' + value false + comment { + access 'read write' + type BOOLEAN + count 1 + } + } + control.144 { + iface MIXER + name 'hf_sns_out mix 0 pcm1_in' + value false + comment { + access 'read write' + type BOOLEAN + count 1 + } + } + control.145 { + iface MIXER + name 'hf_sns_out mix 0 low_pcm0_in' + value false + comment { + access 'read write' + type BOOLEAN + count 1 + } + } + control.146 { + iface MIXER + name 'hf_sns_out mix 0 fm_in' + value false + comment { + access 'read write' + type BOOLEAN + count 1 + } + } + control.147 { + iface MIXER + name 'vad_out mix 0 modem_in' + value false + comment { + access 'read write' + type BOOLEAN + count 1 + } + } + control.148 { + iface MIXER + name 'vad_out mix 0 bt_in' + value false + comment { + access 'read write' + type BOOLEAN + count 1 + } + } + control.149 { + iface MIXER + name 'vad_out mix 0 codec_in0' + value false + comment { + access 'read write' + type BOOLEAN + count 1 + } + } + control.150 { + iface MIXER + name 'vad_out mix 0 codec_in1' + value false + comment { + access 'read write' + type BOOLEAN + count 1 + } + } + control.151 { + iface MIXER + name 'vad_out mix 0 sprot_loop_in' + value false + comment { + access 'read write' + type BOOLEAN + count 1 + } + } + control.152 { + iface MIXER + name 'vad_out mix 0 media_loop1_in' + value false + comment { + access 'read write' + type BOOLEAN + count 1 + } + } + control.153 { + iface MIXER + name 'vad_out mix 0 media_loop2_in' + value false + comment { + access 'read write' + type BOOLEAN + count 1 + } + } + control.154 { + iface MIXER + name 'vad_out mix 0 sidetone_in' + value false + comment { + access 'read write' + type BOOLEAN + count 1 + } + } + control.155 { + iface MIXER + name 'vad_out mix 0 txspeech_in' + value false + comment { + access 'read write' + type BOOLEAN + count 1 + } + } + control.156 { + iface MIXER + name 'vad_out mix 0 speech_in' + value false + comment { + access 'read write' + type BOOLEAN + count 1 + } + } + control.157 { + iface MIXER + name 'vad_out mix 0 tone_in' + value false + comment { + access 'read write' + type BOOLEAN + count 1 + } + } + control.158 { + iface MIXER + name 'vad_out mix 0 voip_in' + value false + comment { + access 'read write' + type BOOLEAN + count 1 + } + } + control.159 { + iface MIXER + name 'vad_out mix 0 pcm0_in' + value false + comment { + access 'read write' + type BOOLEAN + count 1 + } + } + control.160 { + iface MIXER + name 'vad_out mix 0 pcm1_in' + value false + comment { + access 'read write' + type BOOLEAN + count 1 + } + } + control.161 { + iface MIXER + name 'vad_out mix 0 low_pcm0_in' + value false + comment { + access 'read write' + type BOOLEAN + count 1 + } + } + control.162 { + iface MIXER + name 'vad_out mix 0 fm_in' + value false + comment { + access 'read write' + type BOOLEAN + count 1 + } + } + control.163 { + iface MIXER + name 'aware_out mix 0 modem_in' + value false + comment { + access 'read write' + type BOOLEAN + count 1 + } + } + control.164 { + iface MIXER + name 'aware_out mix 0 bt_in' + value false + comment { + access 'read write' + type BOOLEAN + count 1 + } + } + control.165 { + iface MIXER + name 'aware_out mix 0 codec_in0' + value false + comment { + access 'read write' + type BOOLEAN + count 1 + } + } + control.166 { + iface MIXER + name 'aware_out mix 0 codec_in1' + value false + comment { + access 'read write' + type BOOLEAN + count 1 + } + } + control.167 { + iface MIXER + name 'aware_out mix 0 sprot_loop_in' + value false + comment { + access 'read write' + type BOOLEAN + count 1 + } + } + control.168 { + iface MIXER + name 'aware_out mix 0 media_loop1_in' + value false + comment { + access 'read write' + type BOOLEAN + count 1 + } + } + control.169 { + iface MIXER + name 'aware_out mix 0 media_loop2_in' + value false + comment { + access 'read write' + type BOOLEAN + count 1 + } + } + control.170 { + iface MIXER + name 'aware_out mix 0 sidetone_in' + value false + comment { + access 'read write' + type BOOLEAN + count 1 + } + } + control.171 { + iface MIXER + name 'aware_out mix 0 txspeech_in' + value false + comment { + access 'read write' + type BOOLEAN + count 1 + } + } + control.172 { + iface MIXER + name 'aware_out mix 0 speech_in' + value false + comment { + access 'read write' + type BOOLEAN + count 1 + } + } + control.173 { + iface MIXER + name 'aware_out mix 0 tone_in' + value false + comment { + access 'read write' + type BOOLEAN + count 1 + } + } + control.174 { + iface MIXER + name 'aware_out mix 0 voip_in' + value false + comment { + access 'read write' + type BOOLEAN + count 1 + } + } + control.175 { + iface MIXER + name 'aware_out mix 0 pcm0_in' + value false + comment { + access 'read write' + type BOOLEAN + count 1 + } + } + control.176 { + iface MIXER + name 'aware_out mix 0 pcm1_in' + value false + comment { + access 'read write' + type BOOLEAN + count 1 + } + } + control.177 { + iface MIXER + name 'aware_out mix 0 low_pcm0_in' + value false + comment { + access 'read write' + type BOOLEAN + count 1 + } + } + control.178 { + iface MIXER + name 'aware_out mix 0 fm_in' + value false + comment { + access 'read write' + type BOOLEAN + count 1 + } + } + control.179 { + iface MIXER + name 'voip_out mix 0 modem_in' + value false + comment { + access 'read write' + type BOOLEAN + count 1 + } + } + control.180 { + iface MIXER + name 'voip_out mix 0 bt_in' + value false + comment { + access 'read write' + type BOOLEAN + count 1 + } + } + control.181 { + iface MIXER + name 'voip_out mix 0 codec_in0' + value false + comment { + access 'read write' + type BOOLEAN + count 1 + } + } + control.182 { + iface MIXER + name 'voip_out mix 0 codec_in1' + value false + comment { + access 'read write' + type BOOLEAN + count 1 + } + } + control.183 { + iface MIXER + name 'voip_out mix 0 sprot_loop_in' + value false + comment { + access 'read write' + type BOOLEAN + count 1 + } + } + control.184 { + iface MIXER + name 'voip_out mix 0 media_loop1_in' + value false + comment { + access 'read write' + type BOOLEAN + count 1 + } + } + control.185 { + iface MIXER + name 'voip_out mix 0 media_loop2_in' + value false + comment { + access 'read write' + type BOOLEAN + count 1 + } + } + control.186 { + iface MIXER + name 'voip_out mix 0 sidetone_in' + value false + comment { + access 'read write' + type BOOLEAN + count 1 + } + } + control.187 { + iface MIXER + name 'voip_out mix 0 txspeech_in' + value false + comment { + access 'read write' + type BOOLEAN + count 1 + } + } + control.188 { + iface MIXER + name 'voip_out mix 0 speech_in' + value false + comment { + access 'read write' + type BOOLEAN + count 1 + } + } + control.189 { + iface MIXER + name 'voip_out mix 0 tone_in' + value false + comment { + access 'read write' + type BOOLEAN + count 1 + } + } + control.190 { + iface MIXER + name 'voip_out mix 0 voip_in' + value false + comment { + access 'read write' + type BOOLEAN + count 1 + } + } + control.191 { + iface MIXER + name 'voip_out mix 0 pcm0_in' + value false + comment { + access 'read write' + type BOOLEAN + count 1 + } + } + control.192 { + iface MIXER + name 'voip_out mix 0 pcm1_in' + value false + comment { + access 'read write' + type BOOLEAN + count 1 + } + } + control.193 { + iface MIXER + name 'voip_out mix 0 low_pcm0_in' + value false + comment { + access 'read write' + type BOOLEAN + count 1 + } + } + control.194 { + iface MIXER + name 'voip_out mix 0 fm_in' + value false + comment { + access 'read write' + type BOOLEAN + count 1 + } + } + control.195 { + iface MIXER + name 'media_loop2_out mix 0 modem_in' + value false + comment { + access 'read write' + type BOOLEAN + count 1 + } + } + control.196 { + iface MIXER + name 'media_loop2_out mix 0 bt_in' + value false + comment { + access 'read write' + type BOOLEAN + count 1 + } + } + control.197 { + iface MIXER + name 'media_loop2_out mix 0 codec_in0' + value false + comment { + access 'read write' + type BOOLEAN + count 1 + } + } + control.198 { + iface MIXER + name 'media_loop2_out mix 0 codec_in1' + value false + comment { + access 'read write' + type BOOLEAN + count 1 + } + } + control.199 { + iface MIXER + name 'media_loop2_out mix 0 sprot_loop_in' + value false + comment { + access 'read write' + type BOOLEAN + count 1 + } + } + control.200 { + iface MIXER + name 'media_loop2_out mix 0 media_loop1_in' + value false + comment { + access 'read write' + type BOOLEAN + count 1 + } + } + control.201 { + iface MIXER + name 'media_loop2_out mix 0 media_loop2_in' + value false + comment { + access 'read write' + type BOOLEAN + count 1 + } + } + control.202 { + iface MIXER + name 'media_loop2_out mix 0 sidetone_in' + value false + comment { + access 'read write' + type BOOLEAN + count 1 + } + } + control.203 { + iface MIXER + name 'media_loop2_out mix 0 txspeech_in' + value false + comment { + access 'read write' + type BOOLEAN + count 1 + } + } + control.204 { + iface MIXER + name 'media_loop2_out mix 0 speech_in' + value false + comment { + access 'read write' + type BOOLEAN + count 1 + } + } + control.205 { + iface MIXER + name 'media_loop2_out mix 0 tone_in' + value false + comment { + access 'read write' + type BOOLEAN + count 1 + } + } + control.206 { + iface MIXER + name 'media_loop2_out mix 0 voip_in' + value false + comment { + access 'read write' + type BOOLEAN + count 1 + } + } + control.207 { + iface MIXER + name 'media_loop2_out mix 0 pcm0_in' + value false + comment { + access 'read write' + type BOOLEAN + count 1 + } + } + control.208 { + iface MIXER + name 'media_loop2_out mix 0 pcm1_in' + value false + comment { + access 'read write' + type BOOLEAN + count 1 + } + } + control.209 { + iface MIXER + name 'media_loop2_out mix 0 low_pcm0_in' + value false + comment { + access 'read write' + type BOOLEAN + count 1 + } + } + control.210 { + iface MIXER + name 'media_loop2_out mix 0 fm_in' + value false + comment { + access 'read write' + type BOOLEAN + count 1 + } + } + control.211 { + iface MIXER + name 'media_loop1_out mix 0 modem_in' + value false + comment { + access 'read write' + type BOOLEAN + count 1 + } + } + control.212 { + iface MIXER + name 'media_loop1_out mix 0 bt_in' + value false + comment { + access 'read write' + type BOOLEAN + count 1 + } + } + control.213 { + iface MIXER + name 'media_loop1_out mix 0 codec_in0' + value false + comment { + access 'read write' + type BOOLEAN + count 1 + } + } + control.214 { + iface MIXER + name 'media_loop1_out mix 0 codec_in1' + value false + comment { + access 'read write' + type BOOLEAN + count 1 + } + } + control.215 { + iface MIXER + name 'media_loop1_out mix 0 sprot_loop_in' + value false + comment { + access 'read write' + type BOOLEAN + count 1 + } + } + control.216 { + iface MIXER + name 'media_loop1_out mix 0 media_loop1_in' + value false + comment { + access 'read write' + type BOOLEAN + count 1 + } + } + control.217 { + iface MIXER + name 'media_loop1_out mix 0 media_loop2_in' + value false + comment { + access 'read write' + type BOOLEAN + count 1 + } + } + control.218 { + iface MIXER + name 'media_loop1_out mix 0 sidetone_in' + value false + comment { + access 'read write' + type BOOLEAN + count 1 + } + } + control.219 { + iface MIXER + name 'media_loop1_out mix 0 txspeech_in' + value false + comment { + access 'read write' + type BOOLEAN + count 1 + } + } + control.220 { + iface MIXER + name 'media_loop1_out mix 0 speech_in' + value false + comment { + access 'read write' + type BOOLEAN + count 1 + } + } + control.221 { + iface MIXER + name 'media_loop1_out mix 0 tone_in' + value false + comment { + access 'read write' + type BOOLEAN + count 1 + } + } + control.222 { + iface MIXER + name 'media_loop1_out mix 0 voip_in' + value false + comment { + access 'read write' + type BOOLEAN + count 1 + } + } + control.223 { + iface MIXER + name 'media_loop1_out mix 0 pcm0_in' + value false + comment { + access 'read write' + type BOOLEAN + count 1 + } + } + control.224 { + iface MIXER + name 'media_loop1_out mix 0 pcm1_in' + value false + comment { + access 'read write' + type BOOLEAN + count 1 + } + } + control.225 { + iface MIXER + name 'media_loop1_out mix 0 low_pcm0_in' + value false + comment { + access 'read write' + type BOOLEAN + count 1 + } + } + control.226 { + iface MIXER + name 'media_loop1_out mix 0 fm_in' + value false + comment { + access 'read write' + type BOOLEAN + count 1 + } + } + control.227 { + iface MIXER + name 'sprot_loop_out mix 0 modem_in' + value false + comment { + access 'read write' + type BOOLEAN + count 1 + } + } + control.228 { + iface MIXER + name 'sprot_loop_out mix 0 bt_in' + value false + comment { + access 'read write' + type BOOLEAN + count 1 + } + } + control.229 { + iface MIXER + name 'sprot_loop_out mix 0 codec_in0' + value false + comment { + access 'read write' + type BOOLEAN + count 1 + } + } + control.230 { + iface MIXER + name 'sprot_loop_out mix 0 codec_in1' + value false + comment { + access 'read write' + type BOOLEAN + count 1 + } + } + control.231 { + iface MIXER + name 'sprot_loop_out mix 0 sprot_loop_in' + value false + comment { + access 'read write' + type BOOLEAN + count 1 + } + } + control.232 { + iface MIXER + name 'sprot_loop_out mix 0 media_loop1_in' + value false + comment { + access 'read write' + type BOOLEAN + count 1 + } + } + control.233 { + iface MIXER + name 'sprot_loop_out mix 0 media_loop2_in' + value false + comment { + access 'read write' + type BOOLEAN + count 1 + } + } + control.234 { + iface MIXER + name 'sprot_loop_out mix 0 sidetone_in' + value false + comment { + access 'read write' + type BOOLEAN + count 1 + } + } + control.235 { + iface MIXER + name 'sprot_loop_out mix 0 txspeech_in' + value false + comment { + access 'read write' + type BOOLEAN + count 1 + } + } + control.236 { + iface MIXER + name 'sprot_loop_out mix 0 speech_in' + value false + comment { + access 'read write' + type BOOLEAN + count 1 + } + } + control.237 { + iface MIXER + name 'sprot_loop_out mix 0 tone_in' + value false + comment { + access 'read write' + type BOOLEAN + count 1 + } + } + control.238 { + iface MIXER + name 'sprot_loop_out mix 0 voip_in' + value false + comment { + access 'read write' + type BOOLEAN + count 1 + } + } + control.239 { + iface MIXER + name 'sprot_loop_out mix 0 pcm0_in' + value false + comment { + access 'read write' + type BOOLEAN + count 1 + } + } + control.240 { + iface MIXER + name 'sprot_loop_out mix 0 pcm1_in' + value false + comment { + access 'read write' + type BOOLEAN + count 1 + } + } + control.241 { + iface MIXER + name 'sprot_loop_out mix 0 low_pcm0_in' + value false + comment { + access 'read write' + type BOOLEAN + count 1 + } + } + control.242 { + iface MIXER + name 'sprot_loop_out mix 0 fm_in' + value false + comment { + access 'read write' + type BOOLEAN + count 1 + } + } + control.243 { + iface MIXER + name 'pcm2_out mix 0 modem_in' + value false + comment { + access 'read write' + type BOOLEAN + count 1 + } + } + control.244 { + iface MIXER + name 'pcm2_out mix 0 bt_in' + value false + comment { + access 'read write' + type BOOLEAN + count 1 + } + } + control.245 { + iface MIXER + name 'pcm2_out mix 0 codec_in0' + value false + comment { + access 'read write' + type BOOLEAN + count 1 + } + } + control.246 { + iface MIXER + name 'pcm2_out mix 0 codec_in1' + value false + comment { + access 'read write' + type BOOLEAN + count 1 + } + } + control.247 { + iface MIXER + name 'pcm2_out mix 0 sprot_loop_in' + value false + comment { + access 'read write' + type BOOLEAN + count 1 + } + } + control.248 { + iface MIXER + name 'pcm2_out mix 0 media_loop1_in' + value false + comment { + access 'read write' + type BOOLEAN + count 1 + } + } + control.249 { + iface MIXER + name 'pcm2_out mix 0 media_loop2_in' + value false + comment { + access 'read write' + type BOOLEAN + count 1 + } + } + control.250 { + iface MIXER + name 'pcm2_out mix 0 sidetone_in' + value false + comment { + access 'read write' + type BOOLEAN + count 1 + } + } + control.251 { + iface MIXER + name 'pcm2_out mix 0 txspeech_in' + value false + comment { + access 'read write' + type BOOLEAN + count 1 + } + } + control.252 { + iface MIXER + name 'pcm2_out mix 0 speech_in' + value false + comment { + access 'read write' + type BOOLEAN + count 1 + } + } + control.253 { + iface MIXER + name 'pcm2_out mix 0 tone_in' + value false + comment { + access 'read write' + type BOOLEAN + count 1 + } + } + control.254 { + iface MIXER + name 'pcm2_out mix 0 voip_in' + value false + comment { + access 'read write' + type BOOLEAN + count 1 + } + } + control.255 { + iface MIXER + name 'pcm2_out mix 0 pcm0_in' + value false + comment { + access 'read write' + type BOOLEAN + count 1 + } + } + control.256 { + iface MIXER + name 'pcm2_out mix 0 pcm1_in' + value false + comment { + access 'read write' + type BOOLEAN + count 1 + } + } + control.257 { + iface MIXER + name 'pcm2_out mix 0 low_pcm0_in' + value false + comment { + access 'read write' + type BOOLEAN + count 1 + } + } + control.258 { + iface MIXER + name 'pcm2_out mix 0 fm_in' + value false + comment { + access 'read write' + type BOOLEAN + count 1 + } + } + control.259 { + iface MIXER + name 'pcm1_out mix 0 modem_in' + value false + comment { + access 'read write' + type BOOLEAN + count 1 + } + } + control.260 { + iface MIXER + name 'pcm1_out mix 0 bt_in' + value false + comment { + access 'read write' + type BOOLEAN + count 1 + } + } + control.261 { + iface MIXER + name 'pcm1_out mix 0 codec_in0' + value true + comment { + access 'read write' + type BOOLEAN + count 1 + } + } + control.262 { + iface MIXER + name 'pcm1_out mix 0 codec_in1' + value false + comment { + access 'read write' + type BOOLEAN + count 1 + } + } + control.263 { + iface MIXER + name 'pcm1_out mix 0 sprot_loop_in' + value false + comment { + access 'read write' + type BOOLEAN + count 1 + } + } + control.264 { + iface MIXER + name 'pcm1_out mix 0 media_loop1_in' + value false + comment { + access 'read write' + type BOOLEAN + count 1 + } + } + control.265 { + iface MIXER + name 'pcm1_out mix 0 media_loop2_in' + value false + comment { + access 'read write' + type BOOLEAN + count 1 + } + } + control.266 { + iface MIXER + name 'pcm1_out mix 0 sidetone_in' + value false + comment { + access 'read write' + type BOOLEAN + count 1 + } + } + control.267 { + iface MIXER + name 'pcm1_out mix 0 txspeech_in' + value false + comment { + access 'read write' + type BOOLEAN + count 1 + } + } + control.268 { + iface MIXER + name 'pcm1_out mix 0 speech_in' + value false + comment { + access 'read write' + type BOOLEAN + count 1 + } + } + control.269 { + iface MIXER + name 'pcm1_out mix 0 tone_in' + value false + comment { + access 'read write' + type BOOLEAN + count 1 + } + } + control.270 { + iface MIXER + name 'pcm1_out mix 0 voip_in' + value false + comment { + access 'read write' + type BOOLEAN + count 1 + } + } + control.271 { + iface MIXER + name 'pcm1_out mix 0 pcm0_in' + value false + comment { + access 'read write' + type BOOLEAN + count 1 + } + } + control.272 { + iface MIXER + name 'pcm1_out mix 0 pcm1_in' + value false + comment { + access 'read write' + type BOOLEAN + count 1 + } + } + control.273 { + iface MIXER + name 'pcm1_out mix 0 low_pcm0_in' + value false + comment { + access 'read write' + type BOOLEAN + count 1 + } + } + control.274 { + iface MIXER + name 'pcm1_out mix 0 fm_in' + value false + comment { + access 'read write' + type BOOLEAN + count 1 + } + } + control.275 { + iface MIXER + name 'pcm0_out mix 0 modem_in' + value false + comment { + access 'read write' + type BOOLEAN + count 1 + } + } + control.276 { + iface MIXER + name 'pcm0_out mix 0 bt_in' + value false + comment { + access 'read write' + type BOOLEAN + count 1 + } + } + control.277 { + iface MIXER + name 'pcm0_out mix 0 codec_in0' + value false + comment { + access 'read write' + type BOOLEAN + count 1 + } + } + control.278 { + iface MIXER + name 'pcm0_out mix 0 codec_in1' + value false + comment { + access 'read write' + type BOOLEAN + count 1 + } + } + control.279 { + iface MIXER + name 'pcm0_out mix 0 sprot_loop_in' + value false + comment { + access 'read write' + type BOOLEAN + count 1 + } + } + control.280 { + iface MIXER + name 'pcm0_out mix 0 media_loop1_in' + value false + comment { + access 'read write' + type BOOLEAN + count 1 + } + } + control.281 { + iface MIXER + name 'pcm0_out mix 0 media_loop2_in' + value false + comment { + access 'read write' + type BOOLEAN + count 1 + } + } + control.282 { + iface MIXER + name 'pcm0_out mix 0 sidetone_in' + value false + comment { + access 'read write' + type BOOLEAN + count 1 + } + } + control.283 { + iface MIXER + name 'pcm0_out mix 0 txspeech_in' + value false + comment { + access 'read write' + type BOOLEAN + count 1 + } + } + control.284 { + iface MIXER + name 'pcm0_out mix 0 speech_in' + value false + comment { + access 'read write' + type BOOLEAN + count 1 + } + } + control.285 { + iface MIXER + name 'pcm0_out mix 0 tone_in' + value false + comment { + access 'read write' + type BOOLEAN + count 1 + } + } + control.286 { + iface MIXER + name 'pcm0_out mix 0 voip_in' + value false + comment { + access 'read write' + type BOOLEAN + count 1 + } + } + control.287 { + iface MIXER + name 'pcm0_out mix 0 pcm0_in' + value false + comment { + access 'read write' + type BOOLEAN + count 1 + } + } + control.288 { + iface MIXER + name 'pcm0_out mix 0 pcm1_in' + value false + comment { + access 'read write' + type BOOLEAN + count 1 + } + } + control.289 { + iface MIXER + name 'pcm0_out mix 0 low_pcm0_in' + value false + comment { + access 'read write' + type BOOLEAN + count 1 + } + } + control.290 { + iface MIXER + name 'pcm0_out mix 0 fm_in' + value false + comment { + access 'read write' + type BOOLEAN + count 1 + } + } + control.291 { + iface MIXER + name 'media1_out mix 0 media0_in' + value false + comment { + access 'read write' + type BOOLEAN + count 1 + } + } + control.292 { + iface MIXER + name 'media1_out mix 0 media1_in' + value false + comment { + access 'read write' + type BOOLEAN + count 1 + } + } + control.293 { + iface MIXER + name 'media1_out mix 0 media2_in' + value false + comment { + access 'read write' + type BOOLEAN + count 1 + } + } + control.294 { + iface MIXER + name 'media1_out mix 0 media3_in' + value false + comment { + access 'read write' + type BOOLEAN + count 1 + } + } + control.295 { + iface MIXER + name 'media0_out mix 0 media0_in' + value false + comment { + access 'read write' + type BOOLEAN + count 1 + } + } + control.296 { + iface MIXER + name 'media0_out mix 0 media1_in' + value true + comment { + access 'read write' + type BOOLEAN + count 1 + } + } + control.297 { + iface MIXER + name 'media0_out mix 0 media2_in' + value false + comment { + access 'read write' + type BOOLEAN + count 1 + } + } + control.298 { + iface MIXER + name 'media0_out mix 0 media3_in' + value false + comment { + access 'read write' + type BOOLEAN + count 1 + } + } + control.299 { + iface MIXER + name 'media0_in gain 0 rampduration' + value 5 + comment { + access 'read write' + type INTEGER + count 1 + range '5 - 5000' + } + } + control.300 { + iface MIXER + name 'media0_in gain 0 mute' + value true + comment { + access 'read write' + type BOOLEAN + count 1 + } + } + control.301 { + iface MIXER + name 'media0_in gain 0 volume' + value.0 -1440 + value.1 -1440 + comment { + access 'read write' + type INTEGER + count 2 + range '-1440 - 360' + dbmin -14400 + dbmax 3600 + dbvalue.0 -14400 + dbvalue.1 -14400 + } + } + control.302 { + iface MIXER + name 'media1_in gain 0 rampduration' + value 50 + comment { + access 'read write' + type INTEGER + count 1 + range '5 - 5000' + } + } + control.303 { + iface MIXER + name 'media1_in gain 0 mute' + value false + comment { + access 'read write' + type BOOLEAN + count 1 + } + } + control.304 { + iface MIXER + name 'media1_in gain 0 volume' + value.0 0 + value.1 0 + comment { + access 'read write' + type INTEGER + count 2 + range '-1440 - 360' + dbmin -14400 + dbmax 3600 + dbvalue.0 0 + dbvalue.1 0 + } + } + control.305 { + iface MIXER + name 'media2_in gain 0 rampduration' + value 5 + comment { + access 'read write' + type INTEGER + count 1 + range '5 - 5000' + } + } + control.306 { + iface MIXER + name 'media2_in gain 0 mute' + value true + comment { + access 'read write' + type BOOLEAN + count 1 + } + } + control.307 { + iface MIXER + name 'media2_in gain 0 volume' + value.0 -1440 + value.1 -1440 + comment { + access 'read write' + type INTEGER + count 2 + range '-1440 - 360' + dbmin -14400 + dbmax 3600 + dbvalue.0 -14400 + dbvalue.1 -14400 + } + } + control.308 { + iface MIXER + name 'media3_in gain 0 rampduration' + value 5 + comment { + access 'read write' + type INTEGER + count 1 + range '5 - 5000' + } + } + control.309 { + iface MIXER + name 'media3_in gain 0 mute' + value true + comment { + access 'read write' + type BOOLEAN + count 1 + } + } + control.310 { + iface MIXER + name 'media3_in gain 0 volume' + value.0 -1440 + value.1 -1440 + comment { + access 'read write' + type INTEGER + count 2 + range '-1440 - 360' + dbmin -14400 + dbmax 3600 + dbvalue.0 -14400 + dbvalue.1 -14400 + } + } + control.311 { + iface MIXER + name 'pcm0_in gain 0 rampduration' + value 50 + comment { + access 'read write' + type INTEGER + count 1 + range '5 - 5000' + } + } + control.312 { + iface MIXER + name 'pcm0_in gain 0 mute' + value false + comment { + access 'read write' + type BOOLEAN + count 1 + } + } + control.313 { + iface MIXER + name 'pcm0_in gain 0 volume' + value.0 0 + value.1 0 + comment { + access 'read write' + type INTEGER + count 2 + range '-1440 - 360' + dbmin -14400 + dbmax 3600 + dbvalue.0 0 + dbvalue.1 0 + } + } + control.314 { + iface MIXER + name 'pcm1_in gain 0 rampduration' + value 5 + comment { + access 'read write' + type INTEGER + count 1 + range '5 - 5000' + } + } + control.315 { + iface MIXER + name 'pcm1_in gain 0 mute' + value true + comment { + access 'read write' + type BOOLEAN + count 1 + } + } + control.316 { + iface MIXER + name 'pcm1_in gain 0 volume' + value.0 -1440 + value.1 -1440 + comment { + access 'read write' + type INTEGER + count 2 + range '-1440 - 360' + dbmin -14400 + dbmax 3600 + dbvalue.0 -14400 + dbvalue.1 -14400 + } + } + control.317 { + iface MIXER + name 'low_pcm0_in gain 0 rampduration' + value 5 + comment { + access 'read write' + type INTEGER + count 1 + range '5 - 5000' + } + } + control.318 { + iface MIXER + name 'low_pcm0_in gain 0 mute' + value true + comment { + access 'read write' + type BOOLEAN + count 1 + } + } + control.319 { + iface MIXER + name 'low_pcm0_in gain 0 volume' + value.0 -1440 + value.1 -1440 + comment { + access 'read write' + type INTEGER + count 2 + range '-1440 - 360' + dbmin -14400 + dbmax 3600 + dbvalue.0 -14400 + dbvalue.1 -14400 + } + } + control.320 { + iface MIXER + name 'pcm1_out gain 0 rampduration' + value 50 + comment { + access 'read write' + type INTEGER + count 1 + range '5 - 5000' + } + } + control.321 { + iface MIXER + name 'pcm1_out gain 0 mute' + value false + comment { + access 'read write' + type BOOLEAN + count 1 + } + } + control.322 { + iface MIXER + name 'pcm1_out gain 0 volume' + value.0 0 + value.1 0 + comment { + access 'read write' + type INTEGER + count 2 + range '-1440 - 360' + dbmin -14400 + dbmax 3600 + dbvalue.0 0 + dbvalue.1 0 + } + } + control.323 { + iface MIXER + name 'pcm2_out gain 0 rampduration' + value 5 + comment { + access 'read write' + type INTEGER + count 1 + range '5 - 5000' + } + } + control.324 { + iface MIXER + name 'pcm2_out gain 0 mute' + value true + comment { + access 'read write' + type BOOLEAN + count 1 + } + } + control.325 { + iface MIXER + name 'pcm2_out gain 0 volume' + value.0 -1440 + value.1 -1440 + comment { + access 'read write' + type INTEGER + count 2 + range '-1440 - 360' + dbmin -14400 + dbmax 3600 + dbvalue.0 -14400 + dbvalue.1 -14400 + } + } + control.326 { + iface MIXER + name 'voip_in gain 0 rampduration' + value 5 + comment { + access 'read write' + type INTEGER + count 1 + range '5 - 5000' + } + } + control.327 { + iface MIXER + name 'voip_in gain 0 mute' + value true + comment { + access 'read write' + type BOOLEAN + count 1 + } + } + control.328 { + iface MIXER + name 'voip_in gain 0 volume' + value.0 -1440 + value.1 -1440 + comment { + access 'read write' + type INTEGER + count 2 + range '-1440 - 360' + dbmin -14400 + dbmax 3600 + dbvalue.0 -14400 + dbvalue.1 -14400 + } + } + control.329 { + iface MIXER + name 'voip_out gain 0 rampduration' + value 5 + comment { + access 'read write' + type INTEGER + count 1 + range '5 - 5000' + } + } + control.330 { + iface MIXER + name 'voip_out gain 0 mute' + value true + comment { + access 'read write' + type BOOLEAN + count 1 + } + } + control.331 { + iface MIXER + name 'voip_out gain 0 volume' + value.0 -1440 + value.1 -1440 + comment { + access 'read write' + type INTEGER + count 2 + range '-1440 - 360' + dbmin -14400 + dbmax 3600 + dbvalue.0 -14400 + dbvalue.1 -14400 + } + } + control.332 { + iface MIXER + name 'tone_in gain 0 rampduration' + value 5 + comment { + access 'read write' + type INTEGER + count 1 + range '5 - 5000' + } + } + control.333 { + iface MIXER + name 'tone_in gain 0 mute' + value true + comment { + access 'read write' + type BOOLEAN + count 1 + } + } + control.334 { + iface MIXER + name 'tone_in gain 0 volume' + value.0 -1440 + value.1 -1440 + comment { + access 'read write' + type INTEGER + count 2 + range '-1440 - 360' + dbmin -14400 + dbmax 3600 + dbvalue.0 -14400 + dbvalue.1 -14400 + } + } + control.335 { + iface MIXER + name 'aware_out gain 0 rampduration' + value 5 + comment { + access 'read write' + type INTEGER + count 1 + range '5 - 5000' + } + } + control.336 { + iface MIXER + name 'aware_out gain 0 mute' + value true + comment { + access 'read write' + type BOOLEAN + count 1 + } + } + control.337 { + iface MIXER + name 'aware_out gain 0 volume' + value.0 -1440 + value.1 -1440 + comment { + access 'read write' + type INTEGER + count 2 + range '-1440 - 360' + dbmin -14400 + dbmax 3600 + dbvalue.0 -14400 + dbvalue.1 -14400 + } + } + control.338 { + iface MIXER + name 'vad_out gain 0 rampduration' + value 5 + comment { + access 'read write' + type INTEGER + count 1 + range '5 - 5000' + } + } + control.339 { + iface MIXER + name 'vad_out gain 0 mute' + value true + comment { + access 'read write' + type BOOLEAN + count 1 + } + } + control.340 { + iface MIXER + name 'vad_out gain 0 volume' + value.0 -1440 + value.1 -1440 + comment { + access 'read write' + type INTEGER + count 2 + range '-1440 - 360' + dbmin -14400 + dbmax 3600 + dbvalue.0 -14400 + dbvalue.1 -14400 + } + } + control.341 { + iface MIXER + name 'hf_sns_out gain 0 rampduration' + value 5 + comment { + access 'read write' + type INTEGER + count 1 + range '5 - 5000' + } + } + control.342 { + iface MIXER + name 'hf_sns_out gain 0 mute' + value true + comment { + access 'read write' + type BOOLEAN + count 1 + } + } + control.343 { + iface MIXER + name 'hf_sns_out gain 0 volume' + value.0 -1440 + value.1 -1440 + comment { + access 'read write' + type INTEGER + count 2 + range '-1440 - 360' + dbmin -14400 + dbmax 3600 + dbvalue.0 -14400 + dbvalue.1 -14400 + } + } + control.344 { + iface MIXER + name 'hf_out gain 0 rampduration' + value 5 + comment { + access 'read write' + type INTEGER + count 1 + range '5 - 5000' + } + } + control.345 { + iface MIXER + name 'hf_out gain 0 mute' + value true + comment { + access 'read write' + type BOOLEAN + count 1 + } + } + control.346 { + iface MIXER + name 'hf_out gain 0 volume' + value.0 -1440 + value.1 -1440 + comment { + access 'read write' + type INTEGER + count 2 + range '-1440 - 360' + dbmin -14400 + dbmax 3600 + dbvalue.0 -14400 + dbvalue.1 -14400 + } + } + control.347 { + iface MIXER + name 'speech_out gain 0 rampduration' + value 5 + comment { + access 'read write' + type INTEGER + count 1 + range '5 - 5000' + } + } + control.348 { + iface MIXER + name 'speech_out gain 0 mute' + value true + comment { + access 'read write' + type BOOLEAN + count 1 + } + } + control.349 { + iface MIXER + name 'speech_out gain 0 volume' + value.0 -1440 + value.1 -1440 + comment { + access 'read write' + type INTEGER + count 2 + range '-1440 - 360' + dbmin -14400 + dbmax 3600 + dbvalue.0 -14400 + dbvalue.1 -14400 + } + } + control.350 { + iface MIXER + name 'txspeech_in gain 0 rampduration' + value 5 + comment { + access 'read write' + type INTEGER + count 1 + range '5 - 5000' + } + } + control.351 { + iface MIXER + name 'txspeech_in gain 0 mute' + value true + comment { + access 'read write' + type BOOLEAN + count 1 + } + } + control.352 { + iface MIXER + name 'txspeech_in gain 0 volume' + value.0 -1440 + value.1 -1440 + comment { + access 'read write' + type INTEGER + count 2 + range '-1440 - 360' + dbmin -14400 + dbmax 3600 + dbvalue.0 -14400 + dbvalue.1 -14400 + } + } + control.353 { + iface MIXER + name 'rxspeech_out gain 0 rampduration' + value 5 + comment { + access 'read write' + type INTEGER + count 1 + range '5 - 5000' + } + } + control.354 { + iface MIXER + name 'rxspeech_out gain 0 mute' + value true + comment { + access 'read write' + type BOOLEAN + count 1 + } + } + control.355 { + iface MIXER + name 'rxspeech_out gain 0 volume' + value.0 -1440 + value.1 -1440 + comment { + access 'read write' + type INTEGER + count 2 + range '-1440 - 360' + dbmin -14400 + dbmax 3600 + dbvalue.0 -14400 + dbvalue.1 -14400 + } + } + control.356 { + iface MIXER + name 'speech_in gain 0 rampduration' + value 5 + comment { + access 'read write' + type INTEGER + count 1 + range '5 - 5000' + } + } + control.357 { + iface MIXER + name 'speech_in gain 0 mute' + value true + comment { + access 'read write' + type BOOLEAN + count 1 + } + } + control.358 { + iface MIXER + name 'speech_in gain 0 volume' + value.0 -1440 + value.1 -1440 + comment { + access 'read write' + type INTEGER + count 2 + range '-1440 - 360' + dbmin -14400 + dbmax 3600 + dbvalue.0 -14400 + dbvalue.1 -14400 + } + } + control.359 { + iface MIXER + name 'codec_in0 gain 0 rampduration' + value 50 + comment { + access 'read write' + type INTEGER + count 1 + range '5 - 5000' + } + } + control.360 { + iface MIXER + name 'codec_in0 gain 0 mute' + value false + comment { + access 'read write' + type BOOLEAN + count 1 + } + } + control.361 { + iface MIXER + name 'codec_in0 gain 0 volume' + value.0 0 + value.1 0 + comment { + access 'read write' + type INTEGER + count 2 + range '-1440 - 360' + dbmin -14400 + dbmax 3600 + dbvalue.0 0 + dbvalue.1 0 + } + } + control.362 { + iface MIXER + name 'codec_in1 gain 0 rampduration' + value 5 + comment { + access 'read write' + type INTEGER + count 1 + range '5 - 5000' + } + } + control.363 { + iface MIXER + name 'codec_in1 gain 0 mute' + value true + comment { + access 'read write' + type BOOLEAN + count 1 + } + } + control.364 { + iface MIXER + name 'codec_in1 gain 0 volume' + value.0 -1440 + value.1 -1440 + comment { + access 'read write' + type INTEGER + count 2 + range '-1440 - 360' + dbmin -14400 + dbmax 3600 + dbvalue.0 -14400 + dbvalue.1 -14400 + } + } + control.365 { + iface MIXER + name 'codec_out0 gain 0 rampduration' + value 50 + comment { + access 'read write' + type INTEGER + count 1 + range '5 - 5000' + } + } + control.366 { + iface MIXER + name 'codec_out0 gain 0 mute' + value false + comment { + access 'read write' + type BOOLEAN + count 1 + } + } + control.367 { + iface MIXER + name 'codec_out0 gain 0 volume' + value.0 0 + value.1 0 + comment { + access 'read write' + type INTEGER + count 2 + range '-1440 - 360' + dbmin -14400 + dbmax 3600 + dbvalue.0 0 + dbvalue.1 0 + } + } + control.368 { + iface MIXER + name 'codec_out1 gain 0 rampduration' + value 50 + comment { + access 'read write' + type INTEGER + count 1 + range '5 - 5000' + } + } + control.369 { + iface MIXER + name 'codec_out1 gain 0 mute' + value false + comment { + access 'read write' + type BOOLEAN + count 1 + } + } + control.370 { + iface MIXER + name 'codec_out1 gain 0 volume' + value.0 0 + value.1 0 + comment { + access 'read write' + type INTEGER + count 2 + range '-1440 - 360' + dbmin -14400 + dbmax 3600 + dbvalue.0 0 + dbvalue.1 0 + } + } + control.371 { + iface MIXER + name 'bt_out gain 0 rampduration' + value 5 + comment { + access 'read write' + type INTEGER + count 1 + range '5 - 5000' + } + } + control.372 { + iface MIXER + name 'bt_out gain 0 mute' + value true + comment { + access 'read write' + type BOOLEAN + count 1 + } + } + control.373 { + iface MIXER + name 'bt_out gain 0 volume' + value.0 -1440 + value.1 -1440 + comment { + access 'read write' + type INTEGER + count 2 + range '-1440 - 360' + dbmin -14400 + dbmax 3600 + dbvalue.0 -14400 + dbvalue.1 -14400 + } + } + control.374 { + iface MIXER + name 'fm_out gain 0 rampduration' + value 5 + comment { + access 'read write' + type INTEGER + count 1 + range '5 - 5000' + } + } + control.375 { + iface MIXER + name 'fm_out gain 0 mute' + value true + comment { + access 'read write' + type BOOLEAN + count 1 + } + } + control.376 { + iface MIXER + name 'fm_out gain 0 volume' + value.0 -1440 + value.1 -1440 + comment { + access 'read write' + type INTEGER + count 2 + range '-1440 - 360' + dbmin -14400 + dbmax 3600 + dbvalue.0 -14400 + dbvalue.1 -14400 + } + } + control.377 { + iface MIXER + name 'bt_in gain 0 rampduration' + value 5 + comment { + access 'read write' + type INTEGER + count 1 + range '5 - 5000' + } + } + control.378 { + iface MIXER + name 'bt_in gain 0 mute' + value true + comment { + access 'read write' + type BOOLEAN + count 1 + } + } + control.379 { + iface MIXER + name 'bt_in gain 0 volume' + value.0 -1440 + value.1 -1440 + comment { + access 'read write' + type INTEGER + count 2 + range '-1440 - 360' + dbmin -14400 + dbmax 3600 + dbvalue.0 -14400 + dbvalue.1 -14400 + } + } + control.380 { + iface MIXER + name 'fm_in gain 0 rampduration' + value 5 + comment { + access 'read write' + type INTEGER + count 1 + range '5 - 5000' + } + } + control.381 { + iface MIXER + name 'fm_in gain 0 mute' + value true + comment { + access 'read write' + type BOOLEAN + count 1 + } + } + control.382 { + iface MIXER + name 'fm_in gain 0 volume' + value.0 -1440 + value.1 -1440 + comment { + access 'read write' + type INTEGER + count 2 + range '-1440 - 360' + dbmin -14400 + dbmax 3600 + dbvalue.0 -14400 + dbvalue.1 -14400 + } + } + control.383 { + iface MIXER + name 'modem_in gain 0 rampduration' + value 5 + comment { + access 'read write' + type INTEGER + count 1 + range '5 - 5000' + } + } + control.384 { + iface MIXER + name 'modem_in gain 0 mute' + value true + comment { + access 'read write' + type BOOLEAN + count 1 + } + } + control.385 { + iface MIXER + name 'modem_in gain 0 volume' + value.0 -1440 + value.1 -1440 + comment { + access 'read write' + type INTEGER + count 2 + range '-1440 - 360' + dbmin -14400 + dbmax 3600 + dbvalue.0 -14400 + dbvalue.1 -14400 + } + } + control.386 { + iface MIXER + name 'modem_out gain 0 rampduration' + value 5 + comment { + access 'read write' + type INTEGER + count 1 + range '5 - 5000' + } + } + control.387 { + iface MIXER + name 'modem_out gain 0 mute' + value true + comment { + access 'read write' + type BOOLEAN + count 1 + } + } + control.388 { + iface MIXER + name 'modem_out gain 0 volume' + value.0 -1440 + value.1 -1440 + comment { + access 'read write' + type INTEGER + count 2 + range '-1440 - 360' + dbmin -14400 + dbmax 3600 + dbvalue.0 -14400 + dbvalue.1 -14400 + } + } + control.389 { + iface MIXER + name 'media_loop1_out gain 0 rampduration' + value 5 + comment { + access 'read write' + type INTEGER + count 1 + range '5 - 5000' + } + } + control.390 { + iface MIXER + name 'media_loop1_out gain 0 mute' + value true + comment { + access 'read write' + type BOOLEAN + count 1 + } + } + control.391 { + iface MIXER + name 'media_loop1_out gain 0 volume' + value.0 -1440 + value.1 -1440 + comment { + access 'read write' + type INTEGER + count 2 + range '-1440 - 360' + dbmin -14400 + dbmax 3600 + dbvalue.0 -14400 + dbvalue.1 -14400 + } + } + control.392 { + iface MIXER + name 'media_loop2_out gain 0 rampduration' + value 5 + comment { + access 'read write' + type INTEGER + count 1 + range '5 - 5000' + } + } + control.393 { + iface MIXER + name 'media_loop2_out gain 0 mute' + value true + comment { + access 'read write' + type BOOLEAN + count 1 + } + } + control.394 { + iface MIXER + name 'media_loop2_out gain 0 volume' + value.0 -1440 + value.1 -1440 + comment { + access 'read write' + type INTEGER + count 2 + range '-1440 - 360' + dbmin -14400 + dbmax 3600 + dbvalue.0 -14400 + dbvalue.1 -14400 + } + } + control.395 { + iface MIXER + name 'sprot_loop_out gain 0 rampduration' + value 5 + comment { + access 'read write' + type INTEGER + count 1 + range '5 - 5000' + } + } + control.396 { + iface MIXER + name 'sprot_loop_out gain 0 mute' + value true + comment { + access 'read write' + type BOOLEAN + count 1 + } + } + control.397 { + iface MIXER + name 'sprot_loop_out gain 0 volume' + value.0 -1440 + value.1 -1440 + comment { + access 'read write' + type INTEGER + count 2 + range '-1440 - 360' + dbmin -14400 + dbmax 3600 + dbvalue.0 -14400 + dbvalue.1 -14400 + } + } + control.398 { + iface MIXER + name 'media0_in volume 0 rampduration' + value 5 + comment { + access 'read write' + type INTEGER + count 1 + range '5 - 5000' + } + } + control.399 { + iface MIXER + name 'media0_in volume 0 mute' + value true + comment { + access 'read write' + type BOOLEAN + count 1 + } + } + control.400 { + iface MIXER + name 'media0_in volume 0 volume' + value.0 -1440 + value.1 -1440 + comment { + access 'read write' + type INTEGER + count 2 + range '-1440 - 360' + dbmin -14400 + dbmax 3600 + dbvalue.0 -14400 + dbvalue.1 -14400 + } + } + control.401 { + iface MIXER + name 'sidetone_in gain 0 rampduration' + value 5 + comment { + access 'read write' + type INTEGER + count 1 + range '5 - 5000' + } + } + control.402 { + iface MIXER + name 'sidetone_in gain 0 mute' + value true + comment { + access 'read write' + type BOOLEAN + count 1 + } + } + control.403 { + iface MIXER + name 'sidetone_in gain 0 volume' + value.0 -1440 + value.1 -1440 + comment { + access 'read write' + type INTEGER + count 2 + range '-1440 - 360' + dbmin -14400 + dbmax 3600 + dbvalue.0 -14400 + dbvalue.1 -14400 + } + } + control.404 { + iface MIXER + name 'speech_out gain 1 rampduration' + value 5 + comment { + access 'read write' + type INTEGER + count 1 + range '5 - 5000' + } + } + control.405 { + iface MIXER + name 'speech_out gain 1 mute' + value true + comment { + access 'read write' + type BOOLEAN + count 1 + } + } + control.406 { + iface MIXER + name 'speech_out gain 1 volume' + value.0 -1440 + value.1 -1440 + comment { + access 'read write' + type INTEGER + count 2 + range '-1440 - 360' + dbmin -14400 + dbmax 3600 + dbvalue.0 -14400 + dbvalue.1 -14400 + } + } + control.407 { + iface MIXER + name 'media_loop1_out fir 0 params' + value '000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000' + comment { + access 'read write' + type BYTES + count 138 + } + } + control.408 { + iface MIXER + name 'media_loop1_out iir 0 params' + value '000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000' + comment { + access 'read write' + type BYTES + count 300 + } + } + control.409 { + iface MIXER + name 'media_loop1_out mdrp 0 params' + value '00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000' + comment { + access 'read write' + type BYTES + count 76 + } + } + control.410 { + iface MIXER + name 'media_loop2_out fir 0 params' + value '0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000' + comment { + access 'read write' + type BYTES + count 272 + } + } + control.411 { + iface MIXER + name 'media_loop2_out iir 0 params' + value '000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000' + comment { + access 'read write' + type BYTES + count 300 + } + } + control.412 { + iface MIXER + name 'media_loop2_out mdrp 0 params' + value '00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000' + comment { + access 'read write' + type BYTES + count 76 + } + } + control.413 { + iface MIXER + name 'aware_out fir 0 params' + value '0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000' + comment { + access 'read write' + type BYTES + count 272 + } + } + control.414 { + iface MIXER + name 'aware_out iir 0 params' + value '000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000' + comment { + access 'read write' + type BYTES + count 300 + } + } + control.415 { + iface MIXER + name 'aware_out aware 0 params' + value '000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000' + comment { + access 'read write' + type BYTES + count 48 + } + } + control.416 { + iface MIXER + name 'vad_out fir 0 params' + value '0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000' + comment { + access 'read write' + type BYTES + count 272 + } + } + control.417 { + iface MIXER + name 'vad_out iir 0 params' + value '000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000' + comment { + access 'read write' + type BYTES + count 300 + } + } + control.418 { + iface MIXER + name 'sprot_loop_out lpro 0 params' + value '000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000' + comment { + access 'read write' + type BYTES + count 192 + } + } + control.419 { + iface MIXER + name 'codec_in0 dcr 0 params' + value '000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000' + comment { + access 'read write' + type BYTES + count 300 + } + } + control.420 { + iface MIXER + name 'codec_in1 dcr 0 params' + value '000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000' + comment { + access 'read write' + type BYTES + count 300 + } + } + control.421 { + iface MIXER + name 'speech_out ul_module 0 params fir_speech' + value '00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000' + comment { + access 'read write' + type BYTES + count 136 + } + } + control.422 { + iface MIXER + name 'speech_out ul_module 0 params fir_hf_sns' + value '00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000' + comment { + access 'read write' + type BYTES + count 136 + } + } + control.423 { + iface MIXER + name 'speech_out ul_module 0 params iir_speech' + value '000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000' + comment { + access 'read write' + type BYTES + count 48 + } + } + control.424 { + iface MIXER + name 'speech_out ul_module 0 params iir_hf_sns' + value '000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000' + comment { + access 'read write' + type BYTES + count 48 + } + } + control.425 { + iface MIXER + name 'speech_out ul_module 0 params aec' + value '00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000' + comment { + access 'read write' + type BYTES + count 640 + } + } + control.426 { + iface MIXER + name 'speech_out ul_module 0 params nr' + value '0000000000000000000000000000000000000000000000000000000000000000000000000000' + comment { + access 'read write' + type BYTES + count 38 + } + } + control.427 { + iface MIXER + name 'speech_out ul_module 0 params agc' + value '00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000' + comment { + access 'read write' + type BYTES + count 58 + } + } + control.428 { + iface MIXER + name 'speech_out ul_module 0 params biquad' + value '00000000000000000000000000000000000000000000' + comment { + access 'read write' + type BYTES + count 22 + } + } + control.429 { + iface MIXER + name 'speech_out ul_module 0 params compr' + value '000000000000000000000000000000000000000000000000000000000000000000000000' + comment { + access 'read write' + type BYTES + count 36 + } + } + control.430 { + iface MIXER + name 'speech_out ul_module 0 params sns' + value '000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000' + comment { + access 'read write' + type BYTES + count 324 + } + } + control.431 { + iface MIXER + name 'speech_out ul_module 0 params ser' + value '000000000000000000000000000000000000000000000000000000000000000000000000000000000000' + comment { + access 'read write' + type BYTES + count 42 + } + } + control.432 { + iface MIXER + name 'speech_out ul_module 0 params cni' + value '000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000' + comment { + access 'read write' + type BYTES + count 48 + } + } + control.433 { + iface MIXER + name 'speech_out ul_module 0 params ref' + value '000000000000000000000000000000000000000000000000' + comment { + access 'read write' + type BYTES + count 24 + } + } + control.434 { + iface MIXER + name 'speech_out ul_module 0 params delay' + value '000000000000' + comment { + access 'read write' + type BYTES + count 6 + } + } + control.435 { + iface MIXER + name 'speech_out ul_module 0 params bmf' + value '000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000' + comment { + access 'read write' + type BYTES + count 264 + } + } + control.436 { + iface MIXER + name 'speech_out ul_module 0 params dnr' + value '000000000000000000000000000000000000' + comment { + access 'read write' + type BYTES + count 18 + } + } + control.437 { + iface MIXER + name 'speech_in dl_module 0 params ana' + value '00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000' + comment { + access 'read write' + type BYTES + count 52 + } + } + control.438 { + iface MIXER + name 'speech_in dl_module 0 params fir' + value '00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000' + comment { + access 'read write' + type BYTES + count 136 + } + } + control.439 { + iface MIXER + name 'speech_in dl_module 0 params iir' + value '000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000' + comment { + access 'read write' + type BYTES + count 48 + } + } + control.440 { + iface MIXER + name 'speech_in dl_module 0 params nr' + value '0000000000000000000000000000000000000000000000000000000000000000000000000000' + comment { + access 'read write' + type BYTES + count 38 + } + } + control.441 { + iface MIXER + name 'speech_in dl_module 0 params biquad' + value '00000000000000000000000000000000000000000000' + comment { + access 'read write' + type BYTES + count 22 + } + } + control.442 { + iface MIXER + name 'speech_in dl_module 0 params compr' + value '000000000000000000000000000000000000000000000000000000000000000000000000' + comment { + access 'read write' + type BYTES + count 36 + } + } + control.443 { + iface MIXER + name 'speech_in dl_module 0 params cni' + value '000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000' + comment { + access 'read write' + type BYTES + count 48 + } + } + control.444 { + iface MIXER + name 'speech_in dl_module 0 params bwx' + value '000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000' + comment { + access 'read write' + type BYTES + count 54 + } + } + control.445 { + iface MIXER + name 'speech_in dl_module 0 params gmm' + value '00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000' + comment { + access 'read write' + type BYTES + count 586 + } + } + control.446 { + iface MIXER + name 'speech_in dl_module 0 params glc' + value '000000000000000000000000000000000000' + comment { + access 'read write' + type BYTES + count 18 + } + } + control.447 { + iface MIXER + name 'codec_out interleaver slot 0' + value codec_out0_0 + comment { + access 'read write' + type ENUMERATED + count 1 + item.0 none + item.1 codec_out0_0 + item.2 codec_out0_1 + item.3 codec_out1_0 + item.4 codec_out1_1 + } + } + control.448 { + iface MIXER + name 'codec_out interleaver slot 1' + value codec_out0_1 + comment { + access 'read write' + type ENUMERATED + count 1 + item.0 none + item.1 codec_out0_0 + item.2 codec_out0_1 + item.3 codec_out1_0 + item.4 codec_out1_1 + } + } + control.449 { + iface MIXER + name 'codec_out interleaver slot 2' + value codec_out1_0 + comment { + access 'read write' + type ENUMERATED + count 1 + item.0 none + item.1 codec_out0_0 + item.2 codec_out0_1 + item.3 codec_out1_0 + item.4 codec_out1_1 + } + } + control.450 { + iface MIXER + name 'codec_out interleaver slot 3' + value codec_out1_1 + comment { + access 'read write' + type ENUMERATED + count 1 + item.0 none + item.1 codec_out0_0 + item.2 codec_out0_1 + item.3 codec_out1_0 + item.4 codec_out1_1 + } + } + control.451 { + iface MIXER + name 'codec_in deinterleaver codec_in0_0' + value 'slot 0' + comment { + access 'read write' + type ENUMERATED + count 1 + item.0 none + item.1 'slot 0' + item.2 'slot 1' + item.3 'slot 2' + item.4 'slot 3' + } + } + control.452 { + iface MIXER + name 'codec_in deinterleaver codec_in0_1' + value 'slot 1' + comment { + access 'read write' + type ENUMERATED + count 1 + item.0 none + item.1 'slot 0' + item.2 'slot 1' + item.3 'slot 2' + item.4 'slot 3' + } + } + control.453 { + iface MIXER + name 'codec_in deinterleaver codec_in1_0' + value 'slot 2' + comment { + access 'read write' + type ENUMERATED + count 1 + item.0 none + item.1 'slot 0' + item.2 'slot 1' + item.3 'slot 2' + item.4 'slot 3' + } + } + control.454 { + iface MIXER + name 'codec_in deinterleaver codec_in1_1' + value 'slot 3' + comment { + access 'read write' + type ENUMERATED + count 1 + item.0 none + item.1 'slot 0' + item.2 'slot 1' + item.3 'slot 2' + item.4 'slot 3' + } + } + control.455 { + iface MIXER + name 'domain voice mode 0' + value narrowband + comment { + access 'read write' + type ENUMERATED + count 1 + item.0 narrowband + item.1 wideband + } + } + control.456 { + iface MIXER + name 'domain bt mode 0' + value narrowband + comment { + access 'read write' + type ENUMERATED + count 1 + item.0 narrowband + item.1 wideband + } + } + control.457 { + iface MIXER + name 'sst debug byte control' + value '0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000' + comment { + access 'read write' + type BYTES + count 512 + } + } + control.458 { + iface MIXER + name 'probe out0 connection' + value 'media0_in gain' + comment { + access 'read write' + type ENUMERATED + count 1 + item.0 'media0_in gain' + item.1 'media1_in gain' + item.2 'media2_in gain' + item.3 'media3_in gain' + item.4 'pcm0_in gain' + item.5 'pcm1_in gain' + item.6 'pcm1_out gain' + item.7 'pcm2_out gain' + item.8 'voip_in gain' + item.9 'voip_out gain' + item.10 'aware_out gain' + item.11 'vad_out gain' + item.12 'hf_sns_out gain' + item.13 'hf_out gain' + item.14 'speech_out gain' + item.15 'txspeech_in gain' + item.16 'rxspeech_out gain' + item.17 'speech_in gain' + item.18 'media_loop1_out gain' + item.19 'media_loop2_out gain' + item.20 'tone_in gain' + item.21 'codec_out0 gain' + item.22 'codec_out1 gain' + item.23 'bt_out gain' + item.24 'fm_out gain' + item.25 'modem_out gain' + item.26 'codec_in0 gain' + item.27 'codec_in1 gain' + item.28 'bt_in gain' + item.29 'fm_in gain' + item.30 'modem_in gain' + } + } + control.459 { + iface MIXER + name 'probe out1 connection' + value 'media0_in gain' + comment { + access 'read write' + type ENUMERATED + count 1 + item.0 'media0_in gain' + item.1 'media1_in gain' + item.2 'media2_in gain' + item.3 'media3_in gain' + item.4 'pcm0_in gain' + item.5 'pcm1_in gain' + item.6 'pcm1_out gain' + item.7 'pcm2_out gain' + item.8 'voip_in gain' + item.9 'voip_out gain' + item.10 'aware_out gain' + item.11 'vad_out gain' + item.12 'hf_sns_out gain' + item.13 'hf_out gain' + item.14 'speech_out gain' + item.15 'txspeech_in gain' + item.16 'rxspeech_out gain' + item.17 'speech_in gain' + item.18 'media_loop1_out gain' + item.19 'media_loop2_out gain' + item.20 'tone_in gain' + item.21 'codec_out0 gain' + item.22 'codec_out1 gain' + item.23 'bt_out gain' + item.24 'fm_out gain' + item.25 'modem_out gain' + item.26 'codec_in0 gain' + item.27 'codec_in1 gain' + item.28 'bt_in gain' + item.29 'fm_in gain' + item.30 'modem_in gain' + } + } + control.460 { + iface MIXER + name 'probe out2 connection' + value 'media0_in gain' + comment { + access 'read write' + type ENUMERATED + count 1 + item.0 'media0_in gain' + item.1 'media1_in gain' + item.2 'media2_in gain' + item.3 'media3_in gain' + item.4 'pcm0_in gain' + item.5 'pcm1_in gain' + item.6 'pcm1_out gain' + item.7 'pcm2_out gain' + item.8 'voip_in gain' + item.9 'voip_out gain' + item.10 'aware_out gain' + item.11 'vad_out gain' + item.12 'hf_sns_out gain' + item.13 'hf_out gain' + item.14 'speech_out gain' + item.15 'txspeech_in gain' + item.16 'rxspeech_out gain' + item.17 'speech_in gain' + item.18 'media_loop1_out gain' + item.19 'media_loop2_out gain' + item.20 'tone_in gain' + item.21 'codec_out0 gain' + item.22 'codec_out1 gain' + item.23 'bt_out gain' + item.24 'fm_out gain' + item.25 'modem_out gain' + item.26 'codec_in0 gain' + item.27 'codec_in1 gain' + item.28 'bt_in gain' + item.29 'fm_in gain' + item.30 'modem_in gain' + } + } + control.461 { + iface MIXER + name 'probe out3 connection' + value 'media0_in gain' + comment { + access 'read write' + type ENUMERATED + count 1 + item.0 'media0_in gain' + item.1 'media1_in gain' + item.2 'media2_in gain' + item.3 'media3_in gain' + item.4 'pcm0_in gain' + item.5 'pcm1_in gain' + item.6 'pcm1_out gain' + item.7 'pcm2_out gain' + item.8 'voip_in gain' + item.9 'voip_out gain' + item.10 'aware_out gain' + item.11 'vad_out gain' + item.12 'hf_sns_out gain' + item.13 'hf_out gain' + item.14 'speech_out gain' + item.15 'txspeech_in gain' + item.16 'rxspeech_out gain' + item.17 'speech_in gain' + item.18 'media_loop1_out gain' + item.19 'media_loop2_out gain' + item.20 'tone_in gain' + item.21 'codec_out0 gain' + item.22 'codec_out1 gain' + item.23 'bt_out gain' + item.24 'fm_out gain' + item.25 'modem_out gain' + item.26 'codec_in0 gain' + item.27 'codec_in1 gain' + item.28 'bt_in gain' + item.29 'fm_in gain' + item.30 'modem_in gain' + } + } + control.462 { + iface MIXER + name 'probe out4 connection' + value 'media0_in gain' + comment { + access 'read write' + type ENUMERATED + count 1 + item.0 'media0_in gain' + item.1 'media1_in gain' + item.2 'media2_in gain' + item.3 'media3_in gain' + item.4 'pcm0_in gain' + item.5 'pcm1_in gain' + item.6 'pcm1_out gain' + item.7 'pcm2_out gain' + item.8 'voip_in gain' + item.9 'voip_out gain' + item.10 'aware_out gain' + item.11 'vad_out gain' + item.12 'hf_sns_out gain' + item.13 'hf_out gain' + item.14 'speech_out gain' + item.15 'txspeech_in gain' + item.16 'rxspeech_out gain' + item.17 'speech_in gain' + item.18 'media_loop1_out gain' + item.19 'media_loop2_out gain' + item.20 'tone_in gain' + item.21 'codec_out0 gain' + item.22 'codec_out1 gain' + item.23 'bt_out gain' + item.24 'fm_out gain' + item.25 'modem_out gain' + item.26 'codec_in0 gain' + item.27 'codec_in1 gain' + item.28 'bt_in gain' + item.29 'fm_in gain' + item.30 'modem_in gain' + } + } + control.463 { + iface MIXER + name 'probe out5 connection' + value 'media0_in gain' + comment { + access 'read write' + type ENUMERATED + count 1 + item.0 'media0_in gain' + item.1 'media1_in gain' + item.2 'media2_in gain' + item.3 'media3_in gain' + item.4 'pcm0_in gain' + item.5 'pcm1_in gain' + item.6 'pcm1_out gain' + item.7 'pcm2_out gain' + item.8 'voip_in gain' + item.9 'voip_out gain' + item.10 'aware_out gain' + item.11 'vad_out gain' + item.12 'hf_sns_out gain' + item.13 'hf_out gain' + item.14 'speech_out gain' + item.15 'txspeech_in gain' + item.16 'rxspeech_out gain' + item.17 'speech_in gain' + item.18 'media_loop1_out gain' + item.19 'media_loop2_out gain' + item.20 'tone_in gain' + item.21 'codec_out0 gain' + item.22 'codec_out1 gain' + item.23 'bt_out gain' + item.24 'fm_out gain' + item.25 'modem_out gain' + item.26 'codec_in0 gain' + item.27 'codec_in1 gain' + item.28 'bt_in gain' + item.29 'fm_in gain' + item.30 'modem_in gain' + } + } + control.464 { + iface MIXER + name 'probe out6 connection' + value 'media0_in gain' + comment { + access 'read write' + type ENUMERATED + count 1 + item.0 'media0_in gain' + item.1 'media1_in gain' + item.2 'media2_in gain' + item.3 'media3_in gain' + item.4 'pcm0_in gain' + item.5 'pcm1_in gain' + item.6 'pcm1_out gain' + item.7 'pcm2_out gain' + item.8 'voip_in gain' + item.9 'voip_out gain' + item.10 'aware_out gain' + item.11 'vad_out gain' + item.12 'hf_sns_out gain' + item.13 'hf_out gain' + item.14 'speech_out gain' + item.15 'txspeech_in gain' + item.16 'rxspeech_out gain' + item.17 'speech_in gain' + item.18 'media_loop1_out gain' + item.19 'media_loop2_out gain' + item.20 'tone_in gain' + item.21 'codec_out0 gain' + item.22 'codec_out1 gain' + item.23 'bt_out gain' + item.24 'fm_out gain' + item.25 'modem_out gain' + item.26 'codec_in0 gain' + item.27 'codec_in1 gain' + item.28 'bt_in gain' + item.29 'fm_in gain' + item.30 'modem_in gain' + } + } + control.465 { + iface MIXER + name 'probe out7 connection' + value 'media0_in gain' + comment { + access 'read write' + type ENUMERATED + count 1 + item.0 'media0_in gain' + item.1 'media1_in gain' + item.2 'media2_in gain' + item.3 'media3_in gain' + item.4 'pcm0_in gain' + item.5 'pcm1_in gain' + item.6 'pcm1_out gain' + item.7 'pcm2_out gain' + item.8 'voip_in gain' + item.9 'voip_out gain' + item.10 'aware_out gain' + item.11 'vad_out gain' + item.12 'hf_sns_out gain' + item.13 'hf_out gain' + item.14 'speech_out gain' + item.15 'txspeech_in gain' + item.16 'rxspeech_out gain' + item.17 'speech_in gain' + item.18 'media_loop1_out gain' + item.19 'media_loop2_out gain' + item.20 'tone_in gain' + item.21 'codec_out0 gain' + item.22 'codec_out1 gain' + item.23 'bt_out gain' + item.24 'fm_out gain' + item.25 'modem_out gain' + item.26 'codec_in0 gain' + item.27 'codec_in1 gain' + item.28 'bt_in gain' + item.29 'fm_in gain' + item.30 'modem_in gain' + } + } + control.466 { + iface MIXER + name 'probe in0 connection' + value 'media0_in gain' + comment { + access 'read write' + type ENUMERATED + count 1 + item.0 'media0_in gain' + item.1 'media1_in gain' + item.2 'media2_in gain' + item.3 'media3_in gain' + item.4 'pcm0_in gain' + item.5 'pcm1_in gain' + item.6 'pcm1_out gain' + item.7 'pcm2_out gain' + item.8 'voip_in gain' + item.9 'voip_out gain' + item.10 'aware_out gain' + item.11 'vad_out gain' + item.12 'hf_sns_out gain' + item.13 'hf_out gain' + item.14 'speech_out gain' + item.15 'txspeech_in gain' + item.16 'rxspeech_out gain' + item.17 'speech_in gain' + item.18 'media_loop1_out gain' + item.19 'media_loop2_out gain' + item.20 'tone_in gain' + item.21 'codec_out0 gain' + item.22 'codec_out1 gain' + item.23 'bt_out gain' + item.24 'fm_out gain' + item.25 'modem_out gain' + item.26 'codec_in0 gain' + item.27 'codec_in1 gain' + item.28 'bt_in gain' + item.29 'fm_in gain' + item.30 'modem_in gain' + } + } + control.467 { + iface MIXER + name 'probe in1 connection' + value 'media0_in gain' + comment { + access 'read write' + type ENUMERATED + count 1 + item.0 'media0_in gain' + item.1 'media1_in gain' + item.2 'media2_in gain' + item.3 'media3_in gain' + item.4 'pcm0_in gain' + item.5 'pcm1_in gain' + item.6 'pcm1_out gain' + item.7 'pcm2_out gain' + item.8 'voip_in gain' + item.9 'voip_out gain' + item.10 'aware_out gain' + item.11 'vad_out gain' + item.12 'hf_sns_out gain' + item.13 'hf_out gain' + item.14 'speech_out gain' + item.15 'txspeech_in gain' + item.16 'rxspeech_out gain' + item.17 'speech_in gain' + item.18 'media_loop1_out gain' + item.19 'media_loop2_out gain' + item.20 'tone_in gain' + item.21 'codec_out0 gain' + item.22 'codec_out1 gain' + item.23 'bt_out gain' + item.24 'fm_out gain' + item.25 'modem_out gain' + item.26 'codec_in0 gain' + item.27 'codec_in1 gain' + item.28 'bt_in gain' + item.29 'fm_in gain' + item.30 'modem_in gain' + } + } + control.468 { + iface MIXER + name 'probe in2 connection' + value 'media0_in gain' + comment { + access 'read write' + type ENUMERATED + count 1 + item.0 'media0_in gain' + item.1 'media1_in gain' + item.2 'media2_in gain' + item.3 'media3_in gain' + item.4 'pcm0_in gain' + item.5 'pcm1_in gain' + item.6 'pcm1_out gain' + item.7 'pcm2_out gain' + item.8 'voip_in gain' + item.9 'voip_out gain' + item.10 'aware_out gain' + item.11 'vad_out gain' + item.12 'hf_sns_out gain' + item.13 'hf_out gain' + item.14 'speech_out gain' + item.15 'txspeech_in gain' + item.16 'rxspeech_out gain' + item.17 'speech_in gain' + item.18 'media_loop1_out gain' + item.19 'media_loop2_out gain' + item.20 'tone_in gain' + item.21 'codec_out0 gain' + item.22 'codec_out1 gain' + item.23 'bt_out gain' + item.24 'fm_out gain' + item.25 'modem_out gain' + item.26 'codec_in0 gain' + item.27 'codec_in1 gain' + item.28 'bt_in gain' + item.29 'fm_in gain' + item.30 'modem_in gain' + } + } + control.469 { + iface MIXER + name 'probe in3 connection' + value 'media0_in gain' + comment { + access 'read write' + type ENUMERATED + count 1 + item.0 'media0_in gain' + item.1 'media1_in gain' + item.2 'media2_in gain' + item.3 'media3_in gain' + item.4 'pcm0_in gain' + item.5 'pcm1_in gain' + item.6 'pcm1_out gain' + item.7 'pcm2_out gain' + item.8 'voip_in gain' + item.9 'voip_out gain' + item.10 'aware_out gain' + item.11 'vad_out gain' + item.12 'hf_sns_out gain' + item.13 'hf_out gain' + item.14 'speech_out gain' + item.15 'txspeech_in gain' + item.16 'rxspeech_out gain' + item.17 'speech_in gain' + item.18 'media_loop1_out gain' + item.19 'media_loop2_out gain' + item.20 'tone_in gain' + item.21 'codec_out0 gain' + item.22 'codec_out1 gain' + item.23 'bt_out gain' + item.24 'fm_out gain' + item.25 'modem_out gain' + item.26 'codec_in0 gain' + item.27 'codec_in1 gain' + item.28 'bt_in gain' + item.29 'fm_in gain' + item.30 'modem_in gain' + } + } + control.470 { + iface MIXER + name 'probe in4 connection' + value 'media0_in gain' + comment { + access 'read write' + type ENUMERATED + count 1 + item.0 'media0_in gain' + item.1 'media1_in gain' + item.2 'media2_in gain' + item.3 'media3_in gain' + item.4 'pcm0_in gain' + item.5 'pcm1_in gain' + item.6 'pcm1_out gain' + item.7 'pcm2_out gain' + item.8 'voip_in gain' + item.9 'voip_out gain' + item.10 'aware_out gain' + item.11 'vad_out gain' + item.12 'hf_sns_out gain' + item.13 'hf_out gain' + item.14 'speech_out gain' + item.15 'txspeech_in gain' + item.16 'rxspeech_out gain' + item.17 'speech_in gain' + item.18 'media_loop1_out gain' + item.19 'media_loop2_out gain' + item.20 'tone_in gain' + item.21 'codec_out0 gain' + item.22 'codec_out1 gain' + item.23 'bt_out gain' + item.24 'fm_out gain' + item.25 'modem_out gain' + item.26 'codec_in0 gain' + item.27 'codec_in1 gain' + item.28 'bt_in gain' + item.29 'fm_in gain' + item.30 'modem_in gain' + } + } + control.471 { + iface MIXER + name 'probe in5 connection' + value 'media0_in gain' + comment { + access 'read write' + type ENUMERATED + count 1 + item.0 'media0_in gain' + item.1 'media1_in gain' + item.2 'media2_in gain' + item.3 'media3_in gain' + item.4 'pcm0_in gain' + item.5 'pcm1_in gain' + item.6 'pcm1_out gain' + item.7 'pcm2_out gain' + item.8 'voip_in gain' + item.9 'voip_out gain' + item.10 'aware_out gain' + item.11 'vad_out gain' + item.12 'hf_sns_out gain' + item.13 'hf_out gain' + item.14 'speech_out gain' + item.15 'txspeech_in gain' + item.16 'rxspeech_out gain' + item.17 'speech_in gain' + item.18 'media_loop1_out gain' + item.19 'media_loop2_out gain' + item.20 'tone_in gain' + item.21 'codec_out0 gain' + item.22 'codec_out1 gain' + item.23 'bt_out gain' + item.24 'fm_out gain' + item.25 'modem_out gain' + item.26 'codec_in0 gain' + item.27 'codec_in1 gain' + item.28 'bt_in gain' + item.29 'fm_in gain' + item.30 'modem_in gain' + } + } + control.472 { + iface MIXER + name 'probe in6 connection' + value 'media0_in gain' + comment { + access 'read write' + type ENUMERATED + count 1 + item.0 'media0_in gain' + item.1 'media1_in gain' + item.2 'media2_in gain' + item.3 'media3_in gain' + item.4 'pcm0_in gain' + item.5 'pcm1_in gain' + item.6 'pcm1_out gain' + item.7 'pcm2_out gain' + item.8 'voip_in gain' + item.9 'voip_out gain' + item.10 'aware_out gain' + item.11 'vad_out gain' + item.12 'hf_sns_out gain' + item.13 'hf_out gain' + item.14 'speech_out gain' + item.15 'txspeech_in gain' + item.16 'rxspeech_out gain' + item.17 'speech_in gain' + item.18 'media_loop1_out gain' + item.19 'media_loop2_out gain' + item.20 'tone_in gain' + item.21 'codec_out0 gain' + item.22 'codec_out1 gain' + item.23 'bt_out gain' + item.24 'fm_out gain' + item.25 'modem_out gain' + item.26 'codec_in0 gain' + item.27 'codec_in1 gain' + item.28 'bt_in gain' + item.29 'fm_in gain' + item.30 'modem_in gain' + } + } + control.473 { + iface MIXER + name 'probe in7 connection' + value 'media0_in gain' + comment { + access 'read write' + type ENUMERATED + count 1 + item.0 'media0_in gain' + item.1 'media1_in gain' + item.2 'media2_in gain' + item.3 'media3_in gain' + item.4 'pcm0_in gain' + item.5 'pcm1_in gain' + item.6 'pcm1_out gain' + item.7 'pcm2_out gain' + item.8 'voip_in gain' + item.9 'voip_out gain' + item.10 'aware_out gain' + item.11 'vad_out gain' + item.12 'hf_sns_out gain' + item.13 'hf_out gain' + item.14 'speech_out gain' + item.15 'txspeech_in gain' + item.16 'rxspeech_out gain' + item.17 'speech_in gain' + item.18 'media_loop1_out gain' + item.19 'media_loop2_out gain' + item.20 'tone_in gain' + item.21 'codec_out0 gain' + item.22 'codec_out1 gain' + item.23 'bt_out gain' + item.24 'fm_out gain' + item.25 'modem_out gain' + item.26 'codec_in0 gain' + item.27 'codec_in1 gain' + item.28 'bt_in gain' + item.29 'fm_in gain' + item.30 'modem_in gain' + } + } +} diff --git a/meta-edison-distro/recipes-multimedia/libav/libav_0.8.9.bbappend b/meta-edison-distro/recipes-multimedia/libav/libav_0.8.9.bbappend new file mode 100644 index 0000000..939e988 --- /dev/null +++ b/meta-edison-distro/recipes-multimedia/libav/libav_0.8.9.bbappend @@ -0,0 +1,23 @@ +# Disable features that have potential commercial licensing restrictions +EXTRA_OECONF += "\ + --disable-encoder=libmp3lame \ + --disable-decoder=mp3 \ + --disable-decoder=mp3adu \ + --disable-decoder=mp3adufloat \ + --disable-decoder=mp3float \ + --disable-decoder=mp3on4 \ + --disable-decoder=mp3on4float \ + --disable-muxer=mp3 \ + --disable-demuxer=mp3 \ + --disable-bsf=mp3_header_decompress \ + --disable-bsf=mp3_header_compress \ + \ + --disable-encoder=mpeg2video \ + --disable-decoder=mpeg2video \ + --disable-hwaccel=mpeg2_vaapi\ + --disable-hwaccel=mpeg2_dxva2\ + --disable-muxer=mpeg2dvd \ + --disable-muxer=mpeg2svcd \ + --disable-muxer=mpeg2video \ + --disable-muxer=mpeg2vob \ +" diff --git a/meta-edison-distro/recipes-multimedia/mplayer/mplayer-common.bb b/meta-edison-distro/recipes-multimedia/mplayer/mplayer-common.bb new file mode 100644 index 0000000..889bb95 --- /dev/null +++ b/meta-edison-distro/recipes-multimedia/mplayer/mplayer-common.bb @@ -0,0 +1,22 @@ +# Copyright Matthias Hentges <devel@hentges.net> (c) 2006 +# License: MIT (see COPYING.MIT) + +DESCRIPTION = "Preconfigured mplayer preferences" + +LICENSE = "MIT" +LIC_FILES_CHKSUM = "file://${COREBASE}/meta/COPYING.MIT;md5=3da9cfbcb788c80a0384361b4de20420" + +PV = "0.0.1" + +SRC_URI = "file://mplayer.conf" + +# Yes, really /usr/etc!!! +do_install() { + install -d "${D}/usr${sysconfdir}/mplayer" + + install -m 0644 ${WORKDIR}/mplayer.conf "${D}/usr${sysconfdir}/mplayer" +} + +FILES_${PN} = "/usr${sysconfdir}/mplayer" + +inherit allarch diff --git a/meta-edison-distro/recipes-multimedia/mplayer/mplayer-common/mplayer.conf b/meta-edison-distro/recipes-multimedia/mplayer/mplayer-common/mplayer.conf new file mode 100644 index 0000000..37ad65f --- /dev/null +++ b/meta-edison-distro/recipes-multimedia/mplayer/mplayer-common/mplayer.conf @@ -0,0 +1,15 @@ + +# You probably shouldn't touch these +ac=mad, +ao=alsa, + +# Required on SL-Cxxxx for correct rotation in the *VT*, +# breaks rotation in X! +# vf=rotate=1 + +# Enable fullscreen display by default +# fs=true + +# Drop frames to keep audio and video in sync +framedrop=true + diff --git a/meta-edison-distro/recipes-multimedia/mplayer/mplayer2/cross.compile.codec-cfg.patch b/meta-edison-distro/recipes-multimedia/mplayer/mplayer2/cross.compile.codec-cfg.patch new file mode 100644 index 0000000..7b290b5 --- /dev/null +++ b/meta-edison-distro/recipes-multimedia/mplayer/mplayer2/cross.compile.codec-cfg.patch @@ -0,0 +1,16 @@ +Upstream-Status: Pending +Signed-off-by: Martin Jansa <Martin.Jansa@gmail.com> + +diff --git a/Makefile b/Makefile +index 6013ca3..28c6383 100644 +--- a/Makefile ++++ b/Makefile +@@ -600,7 +602,7 @@ mplayer$(EXESUF): + $(CC) -o $@ $^ $(EXTRALIBS) + + codec-cfg$(EXESUF): codec-cfg.c codec-cfg.h +- $(HOST_CC) -O -DCODECS2HTML -I. -o $@ $< ++ $(BUILD_CC) -O -DCODECS2HTML -I. -Iffmpeg -o $@ $< + + codecs.conf.h: codec-cfg$(EXESUF) etc/codecs.conf + ./$^ > $@ diff --git a/meta-edison-distro/recipes-multimedia/mplayer/mplayer2_git.bb b/meta-edison-distro/recipes-multimedia/mplayer/mplayer2_git.bb new file mode 100644 index 0000000..820bffa --- /dev/null +++ b/meta-edison-distro/recipes-multimedia/mplayer/mplayer2_git.bb @@ -0,0 +1,161 @@ +DESCRIPTION = "Open Source multimedia player." +SECTION = "multimedia" +HOMEPAGE = "http://www.mplayerhq.hu/" +DEPENDS = "libtheora ffmpeg zlib libpng jpeg liba52 freetype fontconfig alsa-lib lzo ncurses lame pulseaudio \ + ${@base_conditional('ENTERPRISE_DISTRO', '1', '', 'libmad liba52 lame', d)}" + +RDEPENDS_${PN} = "mplayer-common" +PROVIDES = "mplayer" +RPROVIDES_${PN} = "mplayer" +RCONFLICTS_${PN} = "mplayer" + +LICENSE = "GPLv3" +LIC_FILES_CHKSUM = "file://LICENSE;md5=d32239bcb673463ab874e80d47fae504" + +SRC_URI = "git://repo.or.cz/mplayer.git;protocol=git;branch=master \ + file://cross.compile.codec-cfg.patch \ +" + +SRCREV = "e3f5043233336d8b4b0731c6a8b42a8fda5535ac" + +ARM_INSTRUCTION_SET = "arm" + +PV = "2.0+gitr${SRCPV}" +PR = "r8" + +PARALLEL_MAKE = "" + +S = "${WORKDIR}/git" + +FILES_${PN} = "${bindir}/mplayer ${libdir} /usr/etc/mplayer/" +CONFFILES_${PN} += "/usr/etc/mplayer/input.conf \ + /usr/etc/mplayer/example.conf \ + /usr/etc/mplayer/codecs.conf \ + " + +inherit autotools pkgconfig + +EXTRA_OECONF = " \ + --prefix=/usr \ + --mandir=${mandir} \ + --target=${SIMPLE_TARGET_SYS} \ + \ + --disable-fontconfig \ + --disable-libass \ + --disable-lirc \ + --disable-lircc \ + --disable-joystick \ + --disable-vm \ + --disable-xf86keysym \ + --disable-tv \ + --disable-tv-v4l1 \ + --disable-tv-v4l2 \ + --disable-tv-bsdbt848 \ + --enable-rtc \ + --disable-networking \ + --disable-smb \ + --disable-live \ + --disable-dvdnav \ + --disable-dvdread \ + --disable-dvdread-internal \ + --disable-libdvdcss-internal \ + --disable-cdparanoia \ + --enable-freetype \ + --disable-sortsub \ + --disable-fribidi \ + --disable-enca \ + --disable-ftp \ + --disable-vstream \ + \ + --disable-gif \ + --disable-png \ + --disable-jpeg \ + --disable-libcdio \ + --disable-qtx \ + --disable-xanim \ + --disable-real \ + --disable-xvid \ + \ + --disable-mpg123 \ + --disable-speex \ + --enable-theora \ + --disable-ladspa \ + --disable-libdv \ + --disable-mad \ + --disable-xmms \ + --disable-musepack \ + \ + --disable-gl \ + --disable-vesa \ + --disable-svga \ + --disable-sdl \ + --disable-aa \ + --disable-caca \ + --disable-ggi \ + --disable-ggiwmh \ + --disable-directx \ + --disable-dxr3 \ + --disable-dvb \ + --disable-mga \ + --disable-xmga \ + --disable-xv \ + --disable-vm \ + --disable-xinerama \ + --disable-x11 \ + --disable-fbdev \ + --disable-3dfx \ + --disable-tdfxfb \ + --disable-s3fb \ + --disable-directfb \ + --disable-bl \ + --disable-tdfxvid \ + --disable-tga \ + --disable-pnm \ + --disable-md5sum \ + \ + --disable-alsa \ + --disable-ossaudio \ + --disable-arts \ + --disable-esd \ + --enable-pulse \ + --disable-jack \ + --disable-openal \ + --disable-nas \ + --disable-sgiaudio \ + --disable-sunaudio \ + --disable-win32waveout \ + --enable-select \ + \ + --extra-libs=' -lstdc++ -lvorbis ' \ +" + +EXTRA_OECONF_append_armv6 = " --enable-armv6" +EXTRA_OECONF_append_armv7a = " --enable-armv6 --enable-neon" + +FULL_OPTIMIZATION = "-fexpensive-optimizations -fomit-frame-pointer -frename-registers -O4 -ffast-math" +BUILD_OPTIMIZATION = "${FULL_OPTIMIZATION}" + +CFLAGS_append = " -I${S}/libdvdread4 " + +do_configure() { + sed -i 's|/usr/include|${STAGING_INCDIR}|g' ${S}/configure + sed -i 's|/usr/lib|${STAGING_LIBDIR}|g' ${S}/configure + sed -i 's|/usr/\S*include[\w/]*||g' ${S}/configure + sed -i 's|/usr/\S*lib[\w/]*||g' ${S}/configure + sed -i 's|_install_strip="-s"|_install_strip=""|g' ${S}/configure + sed -i 's|HOST_CC|BUILD_CC|' ${S}/Makefile + + export SIMPLE_TARGET_SYS="$(echo ${TARGET_SYS} | sed s:${TARGET_VENDOR}::g)" + ./configure ${EXTRA_OECONF} +} + +do_compile () { + oe_runmake +} + +do_install_append() { + install -d ${D}/usr/etc/mplayer + install ${S}/etc/input.conf ${D}/usr/etc/mplayer/ + install ${S}/etc/example.conf ${D}/usr/etc/mplayer/ + install ${S}/etc/codecs.conf ${D}/usr/etc/mplayer/ +} diff --git a/meta-edison-distro/recipes-multimedia/pulseaudio/files/pulseaudio.service b/meta-edison-distro/recipes-multimedia/pulseaudio/files/pulseaudio.service new file mode 100644 index 0000000..0f43b1f --- /dev/null +++ b/meta-edison-distro/recipes-multimedia/pulseaudio/files/pulseaudio.service @@ -0,0 +1,12 @@ +[Unit] +Description=PulseAudio Sound System +After=alsa-restore.service + +[Service] +BusName=org.pulseaudio.Server +ExecStart=/usr/bin/pulseaudio --system --resample-method=src-sinc-fastest +Restart=always + +[Install] +WantedBy=multi-user.target + diff --git a/meta-edison-distro/recipes-multimedia/pulseaudio/files/system.pa b/meta-edison-distro/recipes-multimedia/pulseaudio/files/system.pa new file mode 100644 index 0000000..77e5a35 --- /dev/null +++ b/meta-edison-distro/recipes-multimedia/pulseaudio/files/system.pa @@ -0,0 +1,66 @@ +#!/usr/bin/pulseaudio -nF +# +# This file is part of PulseAudio. +# +# PulseAudio is free software; you can redistribute it and/or modify it +# under the terms of the GNU Lesser General Public License as published by +# the Free Software Foundation; either version 2 of the License, or +# (at your option) any later version. +# +# PulseAudio is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +# General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public License +# along with PulseAudio; if not, write to the Free Software Foundation, +# Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. + +# This startup script is used only if PulseAudio is started in system +# mode. + +### Automatically load driver modules depending on the hardware available +.ifexists module-udev-detect.so +load-module module-udev-detect +.else +### Use the static hardware detection module (for systems that lack udev/hal support) +load-module module-detect +.endif + +### Load several protocols +.ifexists module-esound-protocol-unix.so +load-module module-esound-protocol-unix +.endif +load-module module-native-protocol-unix + +### Load bluetooth modules +.ifexists module-bluetooth-policy.so +load-module module-bluetooth-policy +.endif + +.ifexists module-bluez5-discover.so +load-module module-bluez5-discover +.endif + +### Automatically restore the volume of streams and devices +load-module module-stream-restore +load-module module-device-restore + +### Automatically restore the default sink/source when changed by the user +### during runtime +### NOTE: This should be loaded as early as possible so that subsequent modules +### that look up the default sink/source get the right value +load-module module-default-device-restore + +### Automatically move streams to the default sink if the sink they are +### connected to dies, similar for sources +load-module module-rescue-streams + +### Make sure we always have a sink around, even if it is a null sink. +load-module module-always-sink + +### Automatically suspend sinks/sources that become idle for too long +load-module module-suspend-on-idle + +### Enable positioned event sounds +load-module module-position-event-sounds
\ No newline at end of file diff --git a/meta-edison-distro/recipes-multimedia/pulseaudio/pulseaudio-service_1.0.bb b/meta-edison-distro/recipes-multimedia/pulseaudio/pulseaudio-service_1.0.bb new file mode 100644 index 0000000..e8e10b5 --- /dev/null +++ b/meta-edison-distro/recipes-multimedia/pulseaudio/pulseaudio-service_1.0.bb @@ -0,0 +1,28 @@ +DESCRIPTION = "Pulseaudio systemd service" +LICENSE = "MIT" +LIC_FILES_CHKSUM = "file://${COMMON_LICENSE_DIR}/MIT;md5=0835ade698e0bcf8506ecda2f7b4f302" + +inherit systemd useradd + +DEPENDS = "pulseaudio" + +SRC_URI += "\ + file://pulseaudio.service \ + " + +SYSTEMD_SERVICE_${PN} = "pulseaudio.service" + +FILES_${PN} = " \ + ${systemd_unitdir} \ +" + +USERADD_PACKAGES = "pulseaudio-service" +GROUPMEMS_PARAM_pulseaudio-service = " --add root --group audio" + +do_install_append() { + if ${@base_contains('DISTRO_FEATURES','systemd','true','false',d)}; then + install -d ${D}${systemd_unitdir}/system + install -m 0644 ${WORKDIR}/pulseaudio.service ${D}/${systemd_unitdir}/system/ + fi +} + diff --git a/meta-edison-distro/recipes-multimedia/pulseaudio/pulseaudio_5.0.bbappend b/meta-edison-distro/recipes-multimedia/pulseaudio/pulseaudio_5.0.bbappend new file mode 100644 index 0000000..7900344 --- /dev/null +++ b/meta-edison-distro/recipes-multimedia/pulseaudio/pulseaudio_5.0.bbappend @@ -0,0 +1,22 @@ +# Overlay the pulseaudio recipe to embed bluetooth modules for A2DP + +FILESEXTRAPATHS_prepend := "${THISDIR}/files/" + +SRC_URI += "\ + file://system.pa \ + " + +PACKAGECONFIG ??= "${@base_contains('DISTRO_FEATURES', 'bluetooth', 'bluez5', '', d)} \ + ${@base_contains('DISTRO_FEATURES', 'systemd', 'systemd', '', d)} \ + ${@base_contains('DISTRO_FEATURES', 'zeroconf', 'avahi', '', d)} \ + ${@base_contains('DISTRO_FEATURES', 'x11', 'x11', '', d)}" + +RDEPENDS_pulseaudio-server += " \ + pulseaudio-module-loopback \ + pulseaudio-module-bluez5-discover \ + pulseaudio-module-bluez5-device \ + pulseaudio-module-bluetooth-policy" + +do_install_append() { + install -m 0644 ${WORKDIR}/system.pa ${D}/${sysconfdir}/pulse/ +} diff --git a/meta-edison-distro/recipes-support/blink-led/blink-led_0.1.bb b/meta-edison-distro/recipes-support/blink-led/blink-led_0.1.bb new file mode 100644 index 0000000..9fff7d2 --- /dev/null +++ b/meta-edison-distro/recipes-support/blink-led/blink-led_0.1.bb @@ -0,0 +1,23 @@ +DESCRIPTION = "Blinks the Edison LED" +SECTION = "base" +LICENSE = "MIT" +LIC_FILES_CHKSUM = "file://${COMMON_LICENSE_DIR}/MIT;md5=0835ade698e0bcf8506ecda2f7b4f302" + +FILESEXTRAPATHS_prepend := "${THISDIR}/files/" + +SRC_URI = "file://blink-led" +SRC_URI += "file://blink-led.service" + +S = "${WORKDIR}" + +do_install() { + install -d ${D}${bindir} + install -m 0755 blink-led ${D}${bindir} + + # Copy service file + install -d ${D}/${systemd_unitdir}/system + install -m 644 ${WORKDIR}/blink-led.service ${D}/${systemd_unitdir}/system +} + +FILES_${PN} += "${base_libdir}/systemd/system/blink-led.service" +FILES_${PN} += "${bindir}/blink-led" diff --git a/meta-edison-distro/recipes-support/blink-led/files/blink-led b/meta-edison-distro/recipes-support/blink-led/files/blink-led new file mode 100755 index 0000000..f8b884f --- /dev/null +++ b/meta-edison-distro/recipes-support/blink-led/files/blink-led @@ -0,0 +1,109 @@ +#!/usr/bin/env python + +# +# Edison LED blinker +# +# Copyright (c) 2014, Intel Corporation. +# Fabien Chereau <fabien.chereau@intel.com> +# +# Permission is hereby granted, free of charge, to any person obtaining a copy +# of this software and associated documentation files (the "Software"), to deal +# in the Software without restriction, including without limitation the rights +# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +# copies of the Software, and to permit persons to whom the Software is +# furnished to do so, subject to the following conditions: +# +# The above copyright notice and this permission notice shall be included in +# all copies or substantial portions of the Software. +# +# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +# THE SOFTWARE. + +# This is a very poor implementation as it uses subprocesses for init + +import subprocess +import time +import argparse +import signal +import sys + +initial_led_state = "high" + +def write_led(value): + with open("/sys/class/gpio/gpio40/direction","w") as lf: + lf.write(value) + +def blink_once(): + write_led("low") + time.sleep(1./args.frequency*args.duty_cycle) + write_led("high") + time.sleep(1./args.frequency*(1.-args.duty_cycle)) + +def deinit_led_gpio(): + # Revert to default state with LED activated + write_led(initial_led_state) + + # Deinit LED GPIO + subprocess.call(""" + echo 40 >/sys/class/gpio/unexport + echo 214 >/sys/class/gpio/unexport + echo 243 >/sys/class/gpio/unexport + echo 261 >/sys/class/gpio/unexport + """, shell=True) + +def signal_term_handler(signal, frame): + print 'Signal intercepted: de-initing LED GPIOs' + deinit_led_gpio() + sys.exit(0) + + +parser = argparse.ArgumentParser(description='Blink the Edison Arduino board LED.') +parser.add_argument('--frequency', type=float, default=4, help='blink frequency in Hz') +parser.add_argument('--duration', type=float, default=-1, help='duration of the blink in seconds. Negative value means no timeout, i.e. it will stop when the program is killed.') +parser.add_argument('--duty_cycle', type=float, default=0.5, help='duty cycle between 0 and 1') + +args = parser.parse_args() + +# Allows to quit cleanly with CRTL+C or SIGTERM (systemd use SIGTERM to kill a service by default) +signal.signal(signal.SIGTERM, signal_term_handler) +signal.signal(signal.SIGINT, signal_term_handler) + +# Init GPIO mux for LED control +subprocess.call(""" +echo 40 >/sys/class/gpio/export +echo 214 >/sys/class/gpio/export +echo 243 >/sys/class/gpio/export +echo 261 >/sys/class/gpio/export +echo high >/sys/class/gpio/gpio214/direction +echo mode0 > /sys/kernel/debug/gpio_debug/gpio40/current_pinmux +echo low >/sys/class/gpio/gpio243/direction +echo high >/sys/class/gpio/gpio261/direction +echo low >/sys/class/gpio/gpio214/direction""", shell=True) + +# Save current LED value for reverting to proper state at exit +try: + lf = open("/sys/class/gpio/gpio40/value","r") + v = lf.read() + lf.close() + if v[0] == '0': + initial_led_state = "low" + else: + initial_led_state = "high" +except: + print "Can't get current LED state" + +# Blink LED +if args.duration >= 0: + for i in range(0, int(args.duration*args.frequency)): + blink_once() +else: + while True: + blink_once() + +deinit_led_gpio() + diff --git a/meta-edison-distro/recipes-support/blink-led/files/blink-led.service b/meta-edison-distro/recipes-support/blink-led/files/blink-led.service new file mode 100644 index 0000000..3dcb2ab --- /dev/null +++ b/meta-edison-distro/recipes-support/blink-led/files/blink-led.service @@ -0,0 +1,10 @@ +[Unit] +Description=Edison Arduino board LED Blinker + +[Service] +ExecStart=/usr/bin/blink-led +Restart=on-failure + +[Install] +WantedBy=basic.target + diff --git a/meta-edison-distro/recipes-support/cleanjournal/cleanjournal.bb b/meta-edison-distro/recipes-support/cleanjournal/cleanjournal.bb new file mode 100644 index 0000000..cc21638 --- /dev/null +++ b/meta-edison-distro/recipes-support/cleanjournal/cleanjournal.bb @@ -0,0 +1,31 @@ +DESCRIPTION = "Cleanjournal tool. Remove all corrupted journald entries at startup." +SECTION = "base" +LICENSE = "MIT" +LIC_FILES_CHKSUM = "file://${COMMON_LICENSE_DIR}/MIT;md5=0835ade698e0bcf8506ecda2f7b4f302" + + +SRC_URI += "file://cleanjournal.service" +SRC_URI += "file://clean_journal.sh" + +SYSTEMD_SERVICE_${PN} = "cleanjournal.service" + +RDEPENDS_${PN} = "systemd" +DEPENDS = "systemd" +inherit systemd + +do_install() { + # install service file + install -d ${D}${systemd_unitdir}/system + install -c -m 0644 ${WORKDIR}/cleanjournal.service ${D}${systemd_unitdir}/system + + # install cleanjournal script + install -d ${D}${sbindir} + install -c -m 0755 ${WORKDIR}/clean_journal.sh ${D}${sbindir} +} + +# As this package is tied to systemd, only build it when we're also building systemd. +python () { + if not oe.utils.contains ('DISTRO_FEATURES', 'systemd', True, False, d): + raise bb.parse.SkipPackage("'systemd' not in DISTRO_FEATURES") +} + diff --git a/meta-edison-distro/recipes-support/cleanjournal/files/clean_journal.sh b/meta-edison-distro/recipes-support/cleanjournal/files/clean_journal.sh new file mode 100644 index 0000000..5758d09 --- /dev/null +++ b/meta-edison-distro/recipes-support/cleanjournal/files/clean_journal.sh @@ -0,0 +1,60 @@ +#!/bin/sh + +# +# Cleanjournal script +# +# Copyright (c) 2014, Intel Corporation. +# Fabien Rodriguez <fabienx.rodriguez@intel.com> +# +# Permission is hereby granted, free of charge, to any person obtaining a copy +# of this software and associated documentation files (the "Software"), to deal +# in the Software without restriction, including without limitation the rights +# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +# copies of the Software, and to permit persons to whom the Software is +# furnished to do so, subject to the following conditions: +# +# The above copyright notice and this permission notice shall be included in +# all copies or substantial portions of the Software. +# +# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +# THE SOFTWARE. +# + +# +# This script checks if the remaining space in root partition is lower than 10%. +# In that case, the corrupted journald entries (ended by '~') will be deleted +# one by one until remaining space becomes greater or equal to 10%. +# At each boot, the script is launched by systemd at startup. +# + +# max allowed free space is 10% +max_allowed_free_space=10 + +# check remaining space and update clean_journal_needed variable +check_free_space() { + current_free_space=$(df -h | grep /dev/root | awk '{print 100 - $5}' | sed 's/%//') + if [ "$current_free_space" -lt "$max_allowed_free_space" ]; then + clean_journal_needed=true + else + clean_journal_needed=false + fi +} + +check_free_space +if [ "$clean_journal_needed" = true ]; then + # delete each journald corrupted entry + # until remaining space becomes greater than 10% + for corrupted_journal_file in $(find /var/log/journal/ -name '*~'); do + rm "$corrupted_journal_file" + check_free_space + if [ "$clean_journal_needed" = false ]; then + break + fi + done +fi + diff --git a/meta-edison-distro/recipes-support/cleanjournal/files/cleanjournal.service b/meta-edison-distro/recipes-support/cleanjournal/files/cleanjournal.service new file mode 100644 index 0000000..ab704f3 --- /dev/null +++ b/meta-edison-distro/recipes-support/cleanjournal/files/cleanjournal.service @@ -0,0 +1,10 @@ +[Unit] +Description=Cleanjournal service + +[Service] +ExecStart=/usr/sbin/clean_journal.sh +Restart=no + +[Install] +WantedBy=basic.target + diff --git a/meta-edison-distro/recipes-support/crashlog/crashlog.bb b/meta-edison-distro/recipes-support/crashlog/crashlog.bb new file mode 100644 index 0000000..2ef10ce --- /dev/null +++ b/meta-edison-distro/recipes-support/crashlog/crashlog.bb @@ -0,0 +1,31 @@ +DESCRIPTION = "Crashlog tool. Retrieve last saved kernel message in case of crash" +SECTION = "base" +LICENSE = "MIT" +LIC_FILES_CHKSUM = "file://${COMMON_LICENSE_DIR}/MIT;md5=0835ade698e0bcf8506ecda2f7b4f302" + + +SRC_URI += "file://crashlog.service" +SRC_URI += "file://retrieve_crashlog.sh" + +SYSTEMD_SERVICE_${PN} = "crashlog.service" + +RDEPENDS_${PN} = "systemd" +DEPENDS = "systemd" +inherit systemd + +do_install() { + # install service file + install -d ${D}${systemd_unitdir}/system + install -c -m 0644 ${WORKDIR}/crashlog.service ${D}${systemd_unitdir}/system + + # install crashlog script + install -d ${D}${sbindir} + install -c -m 0755 ${WORKDIR}/retrieve_crashlog.sh ${D}${sbindir} +} + +# As this package is tied to systemd, only build it when we're also building systemd. +python () { + if not oe.utils.contains ('DISTRO_FEATURES', 'systemd', True, False, d): + raise bb.parse.SkipPackage("'systemd' not in DISTRO_FEATURES") +} + diff --git a/meta-edison-distro/recipes-support/crashlog/files/crashlog.service b/meta-edison-distro/recipes-support/crashlog/files/crashlog.service new file mode 100644 index 0000000..a2c7aab --- /dev/null +++ b/meta-edison-distro/recipes-support/crashlog/files/crashlog.service @@ -0,0 +1,10 @@ +[Unit] +Description=Crashlog service + +[Service] +ExecStart=/usr/sbin/retrieve_crashlog.sh +Restart=no + +[Install] +WantedBy=basic.target + diff --git a/meta-edison-distro/recipes-support/crashlog/files/retrieve_crashlog.sh b/meta-edison-distro/recipes-support/crashlog/files/retrieve_crashlog.sh new file mode 100755 index 0000000..a7f007c --- /dev/null +++ b/meta-edison-distro/recipes-support/crashlog/files/retrieve_crashlog.sh @@ -0,0 +1,98 @@ +#!/bin/sh + +# +# Crashlog script +# +# Copyright (c) 2014, Intel Corporation. +# Simon Desfarges <simonx.desfarges@intel.com> +# +# Permission is hereby granted, free of charge, to any person obtaining a copy +# of this software and associated documentation files (the "Software"), to deal +# in the Software without restriction, including without limitation the rights +# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +# copies of the Software, and to permit persons to whom the Software is +# furnished to do so, subject to the following conditions: +# +# The above copyright notice and this permission notice shall be included in +# all copies or substantial portions of the Software. +# +# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +# THE SOFTWARE. +# + +# +# This script automatically gather kernel logs in case of crashing. +# At each boot, the script is launched by systemd at startup. +# It detects the boot reason and in case of watchdog reboot +# (saying the platform hanged) the script will save the kernel +# log into a file named crashlog_xxxx. +# + +ipanic_console_path=/proc/emmc_ipanic_console +crashlog_path=/home/root + +# line containing 'WAKESRC' looks like: +# 'Jan 01 00:00:12 edison kernel: [BOOT] WAKESRC=[real reset] (osnib)' +# wakesrc is the 4th field with [ and ] separators +# List of available wake sources is in driver/platform/x86/intel_scu_ipcutil.c + +wakesrc=$(journalctl -k -b -0 | grep WAKESRC | awk -F'[][]' '{print $4}') + +# any watchdog boot implies a crash +tmp=$(echo -n "${wakesrc}" | grep watchdog) +if [ -n "${tmp}" ]; then + # get the last sequence number (ie for crashlog_00001, get the 1) + last_sequence_number=$(ls ${crashlog_path}/crashlog_* | tail -1 | awk -F_ '{print $NF}' | awk -F. '{print $NR}') + if [ -z $last_sequence_number ]; then + last_sequence_number="0" + fi + + new_sequence_number=$(expr ${last_sequence_number} + 1) + new_name=$(printf "crashlog_%05d" $new_sequence_number) + + # create working directory + mkdir ${crashlog_path}/${new_name} + + # write crashfile + crashfile_path=${crashlog_path}/${new_name}/crashfile + + event="CRASH" + manufacturer="Intel Corporation" + product_name=$(cat /factory/hardware_model) + version=$(cat /factory/hardware_version) + serial_number=$(cat /factory/serial_number) + linux_version=$(uname -a) + build_version=$(cat /etc/version) + date=$(date) + + echo "EVENT=${event}" > ${crashfile_path} + echo "Manufacturer : ${manufacturer}" >> ${crashfile_path} + echo "Product name : ${product_name}" >> ${crashfile_path} + echo "Version : ${version}" >> ${crashfile_path} + echo "Serial Number : ${serial_number}" >> ${crashfile_path} + echo "Linux version : ${linux_version}" >> ${crashfile_path} + echo "Build version : ${build_version}" >> ${crashfile_path} + echo "Date : ${date}" >> ${crashfile_path} + echo -e "Wake source : ${wakesrc}" >> ${crashfile_path} + + # write full journal binary & logs from previous boot + journalctl -b -1 -o short-monotonic > ${crashlog_path}/${new_name}/journal_logs + journalctl -b -1 -o export > ${crashlog_path}/${new_name}/journal_binary + + # write panic trace + if [ -e ${ipanic_console_path} ]; then + cat ${ipanic_console_path} > ${crashlog_path}/${new_name}/panic + echo clear > ${ipanic_console_path} + fi + + # create archive and clear folder + tar -zcf ${crashlog_path}/${new_name}.tar.gz -C ${crashlog_path} ${new_name} + rm -rf ${crashlog_path}/${new_name} + +fi + diff --git a/meta-edison-distro/recipes-support/edison-mcu/files/intel_mcu.bin b/meta-edison-distro/recipes-support/edison-mcu/files/intel_mcu.bin Binary files differnew file mode 100644 index 0000000..dcf0544 --- /dev/null +++ b/meta-edison-distro/recipes-support/edison-mcu/files/intel_mcu.bin diff --git a/meta-edison-distro/recipes-support/edison-mcu/files/mcu_fw_loader.service b/meta-edison-distro/recipes-support/edison-mcu/files/mcu_fw_loader.service new file mode 100644 index 0000000..0057ab6 --- /dev/null +++ b/meta-edison-distro/recipes-support/edison-mcu/files/mcu_fw_loader.service @@ -0,0 +1,10 @@ +[Unit] +Description=Daemon to load edison mcu app binary +After=syslog.target + +[Service] +ExecStart=/etc/intel_mcu/mcu_fw_loader.sh + +[Install] +WantedBy=multi-user.target + diff --git a/meta-edison-distro/recipes-support/edison-mcu/files/mcu_fw_loader.sh b/meta-edison-distro/recipes-support/edison-mcu/files/mcu_fw_loader.sh new file mode 100644 index 0000000..734352d --- /dev/null +++ b/meta-edison-distro/recipes-support/edison-mcu/files/mcu_fw_loader.sh @@ -0,0 +1,12 @@ +#!/bin/sh +#author: JiuJin Hong (jiujinx.hong@intel.com) +if [ ! -d "/sys/devices/platform/intel_mcu" ];then + exit +fi + +if [ ! -f "/lib/firmware/intel_mcu.bin" ];then + exit +fi + +echo "load mcu app" > /sys/devices/platform/intel_mcu/control + diff --git a/meta-edison-distro/recipes-support/edison-mcu/mcu-fw-bin_0.1.bb b/meta-edison-distro/recipes-support/edison-mcu/mcu-fw-bin_0.1.bb new file mode 100644 index 0000000..eafb813 --- /dev/null +++ b/meta-edison-distro/recipes-support/edison-mcu/mcu-fw-bin_0.1.bb @@ -0,0 +1,17 @@ +DESCRIPTION = "This is edison mcu fw binary." +HOMEPAGE = "http://www.intel.com" +LICENSE = "CLOSED" + +FILESEXTRAPATHS_prepend := "${THISDIR}/files/" + +SRC_URI = "file://intel_mcu.bin" + +S = "${WORKDIR}" + +do_install () { + install -v -d ${D}/${base_libdir}/firmware/ + install -m 644 intel_mcu.bin ${D}/${base_libdir}/firmware/ +} + +FILES_${PN} = "${base_libdir}/firmware/" + diff --git a/meta-edison-distro/recipes-support/edison-mcu/mcu-fw-load_0.1.bb b/meta-edison-distro/recipes-support/edison-mcu/mcu-fw-load_0.1.bb new file mode 100644 index 0000000..a48aa10 --- /dev/null +++ b/meta-edison-distro/recipes-support/edison-mcu/mcu-fw-load_0.1.bb @@ -0,0 +1,23 @@ +DESCRIPTION = "This is intel mcu app download daemon." +HOMEPAGE = "http://www.intel.com" +LICENSE = "CLOSED" + +FILESEXTRAPATHS_prepend := "${THISDIR}/files/" + +SRC_URI = "file://mcu_fw_loader.service \ + file://mcu_fw_loader.sh" + +SYSTEMD_SERVICE_${PN} = "mcu_fw_loader.service" + +S = "${WORKDIR}" + +inherit systemd + +do_install () { + install -d ${D}${sysconfdir}/intel_mcu/ + install -m 0755 mcu_fw_loader.sh ${D}${sysconfdir}/intel_mcu/ + + install -d ${D}${systemd_unitdir}/system/ + install -m 0644 mcu_fw_loader.service ${D}${systemd_unitdir}/system/ +} + diff --git a/meta-edison-distro/recipes-support/edison-sst/files/fw_sst_119a.bin b/meta-edison-distro/recipes-support/edison-sst/files/fw_sst_119a.bin Binary files differnew file mode 100644 index 0000000..b704fb6 --- /dev/null +++ b/meta-edison-distro/recipes-support/edison-sst/files/fw_sst_119a.bin diff --git a/meta-edison-distro/recipes-support/edison-sst/sst-fw-bin_0.1.bb b/meta-edison-distro/recipes-support/edison-sst/sst-fw-bin_0.1.bb new file mode 100644 index 0000000..a6c7021 --- /dev/null +++ b/meta-edison-distro/recipes-support/edison-sst/sst-fw-bin_0.1.bb @@ -0,0 +1,19 @@ +DESCRIPTION = "This is edison sst fw binary." +HOMEPAGE = "http://www.intel.com" +LICENSE = "CLOSED" + +FILESEXTRAPATHS_prepend := "${THISDIR}/files/" + +SRC_URI = "file://fw_sst_119a.bin" + +S = "${WORKDIR}" + +do_install () { + install -v -d ${D}/${base_libdir}/firmware/ + install -m 644 fw_sst_119a.bin ${D}/${base_libdir}/firmware/ +} + +INSANE_SKIP_${PN} = "arch" + +FILES_${PN} = "${base_libdir}/firmware/" + diff --git a/meta-edison-distro/recipes-support/i2c-tools/i2c-tools-3.0.3/Module.mk b/meta-edison-distro/recipes-support/i2c-tools/i2c-tools-3.0.3/Module.mk new file mode 100644 index 0000000..7c7b636 --- /dev/null +++ b/meta-edison-distro/recipes-support/i2c-tools/i2c-tools-3.0.3/Module.mk @@ -0,0 +1,72 @@ +# EEPROMER +# +# Licensed under the GNU General Public License. + +EEPROMER_DIR := eepromer + +EEPROMER_CFLAGS := -Wstrict-prototypes -Wshadow -Wpointer-arith -Wcast-qual \ + -Wcast-align -Wwrite-strings -Wnested-externs -Winline \ + -W -Wundef -Wmissing-prototypes -Iinclude + +EEPROMER_TARGETS := eepromer eeprom eeprog + +# +# Programs +# + +$(EEPROMER_DIR)/eepromer: $(EEPROMER_DIR)/eepromer.o + $(CC) $(LDFLAGS) -o $@ $^ + +$(EEPROMER_DIR)/eeprom: $(EEPROMER_DIR)/eeprom.o + $(CC) $(LDFLAGS) -o $@ $^ + +$(EEPROMER_DIR)/eeprog: $(EEPROMER_DIR)/eeprog.o $(EEPROMER_DIR)/24cXX.o + $(CC) $(LDFLAGS) -o $@ $^ + +# +# Objects +# + +$(EEPROMER_DIR)/eepromer.o: $(EEPROMER_DIR)/eepromer.c + $(CC) $(CFLAGS) $(EEPROMER_CFLAGS) -c $< -o $@ + +$(EEPROMER_DIR)/eeprom.o: $(EEPROMER_DIR)/eeprom.c + $(CC) $(CFLAGS) $(EEPROMER_CFLAGS) -c $< -o $@ + +$(EEPROMER_DIR)/eeprog.o: $(EEPROMER_DIR)/eeprog.c + $(CC) $(CFLAGS) $(EEPROMER_CFLAGS) -c $< -o $@ + +$(EEPROMER_DIR)/24cXX.o: $(EEPROMER_DIR)/24cXX.c + $(CC) $(CFLAGS) $(EEPROMER_CFLAGS) -c $< -o $@ + +# +# Commands +# + +all-eepromer: $(addprefix $(EEPROMER_DIR)/,$(EEPROMER_TARGETS)) + +strip-eepromer: $(addprefix $(EEPROMER_DIR)/,$(EEPROMER_TARGETS)) + strip $(addprefix $(EEPROMER_DIR)/,$(EEPROMER_TARGETS)) + +clean-eepromer: + $(RM) $(addprefix $(EEPROMER_DIR)/,*.o $(EEPROMER_TARGETS)) + +install-eepromer: $(addprefix $(EEPROMER_DIR)/,$(EEPROMER_TARGETS)) + $(INSTALL_DIR) $(DESTDIR)$(sbindir) $(DESTDIR)$(man8dir) + for program in $(EEPROMER_TARGETS) ; do \ + $(INSTALL_PROGRAM) $(EEPROMER_DIR)/$$program $(DESTDIR)$(sbindir) ; done + +uninstall-eepromer: + for program in $(EEPROMER_TARGETS) ; do \ + $(RM) $(DESTDIR)$(sbindir)/$$program ; \ + $(RM) $(DESTDIR)$(man8dir)/$$program.8 ; done + +all: all-eepromer + +strip: strip-eepromer + +clean: clean-eepromer + +install: install-eepromer + +uninstall: uninstall-eepromer diff --git a/meta-edison-distro/recipes-support/i2c-tools/i2c-tools_3.0.3.bb b/meta-edison-distro/recipes-support/i2c-tools/i2c-tools_3.0.3.bb new file mode 100644 index 0000000..021090c --- /dev/null +++ b/meta-edison-distro/recipes-support/i2c-tools/i2c-tools_3.0.3.bb @@ -0,0 +1,24 @@ +DESCRIPTION = "Set of i2c tools for linux" +SECTION = "base" +LICENSE = "GPLv2" +LIC_FILES_CHKSUM = "file://COPYING;md5=751419260aa954499f7abaabaa882bbe" + +SRC_URI = "http://dl.lm-sensors.org/i2c-tools/releases/i2c-tools-${PV}.tar.bz2 \ + file://Module.mk \ + " +SRC_URI[md5sum] = "511376eed04455cdb277ef19c5f73bb4" +SRC_URI[sha256sum] = "23b28e474741834e3f1b35b0686528769a13adc92d2ff5603cbda1d6bd5e5629" + +inherit autotools + +do_compile_prepend() { + cp ${WORKDIR}/Module.mk ${S}/eepromer/ + sed -i 's#/usr/local#/usr#' Makefile + echo "include eepromer/Module.mk" >> Makefile +} + +do_install_append() { + install -d ${D}${includedir}/linux + install -m 0644 include/linux/i2c-dev.h ${D}${includedir}/linux/i2c-dev-user.h + rm -f ${D}${includedir}/linux/i2c-dev.h +} diff --git a/meta-edison-distro/recipes-support/pwr-button-handler/files/pwr-button-handler.c b/meta-edison-distro/recipes-support/pwr-button-handler/files/pwr-button-handler.c new file mode 100644 index 0000000..d598160 --- /dev/null +++ b/meta-edison-distro/recipes-support/pwr-button-handler/files/pwr-button-handler.c @@ -0,0 +1,167 @@ +/* + * Edison PWR button handler + * + * Copyright (c) 2014, Intel Corporation. + * Fabien Chereau <fabien.chereau@intel.com> + * Loïc Akue <loicx.akue@intel.com> + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN + * THE SOFTWARE. + */ + + +#include <stdio.h> +#include <stdlib.h> +#include <unistd.h> +#include <errno.h> +#include <string.h> +#include <assert.h> +#include <sys/poll.h> +#include <fcntl.h> +#include <sys/time.h> +#include <sys/ioctl.h> +#include <sys/types.h> + +/* See full definitions in include/linux/input.h */ +/* Also find more doc in Documentation/input/input.txt */ +#define EV_KEY 0x01 +/* Edison Arduino board PWR button code */ +#define KEY_POWER 116 + +/* We use 2 seconds for now */ +#define EDISON_OOBE_PRESS_TIMEOUT 2 + +struct input_event { + struct timeval time; + unsigned short type; + unsigned short code; + unsigned int value; +}; + + +int main(int argc, char **argv) +{ + struct timeval tv; + struct input_event event; + struct pollfd p; + int fd, n; + ssize_t len; + + if (argc!=3) + { + printf("Usage:\n"); + printf(" %s \"command_line1\" \"command_line2\"\n", argv[0]); + printf(" command_line1: a command line to execute when the PWR button is pressed for more than 2s\n"); + printf(" command_line2: a second command line to execute when the PWR button is released (after being pressed for more than 2s)\n"); + return -1; + } + + + /* Time of the last press event. + We reset this to zero when the button is released */ + time_t time_at_last_press = 0; + + int event_already_fired = 0; + + fd = open("/dev/input/event1", O_RDONLY); + if (fd < 0) { + perror("Can't open /dev/input/event1 device"); + return fd; + } + + memset(&p, 0, sizeof(p)); + p.fd = fd; + p.events = POLLIN; + + while (1) { + /* Refresh every 20 ms if the user already started pressing the button */ + n = poll(&p, 1, time_at_last_press==0 ? -1 : 20); + if (n < 0) { + perror("Failed to poll /dev/input/event1 device"); + break; + } + if (n==0) { + /* Poll timed out */ + gettimeofday(&tv, NULL); + if (tv.tv_sec - time_at_last_press >= EDISON_OOBE_PRESS_TIMEOUT && event_already_fired == 0) + { + event_already_fired = 1; + printf("Edison PWR button was pressed more than 2s\n"); + fflush(stdout); + system(argv[1]); + } + continue; + } + + len = read(fd, &event, sizeof(event)); + if (len < 0) { + perror("Reading of /dev/input/event1 events failed"); + break; + } + + if (len != sizeof(event)) { + perror("Wrong size of input_event struct"); + break; + } + + /* ignore non KEY event, and non PWR button events */ + if (event.type != EV_KEY || event.code != KEY_POWER) + continue; + + gettimeofday(&tv, NULL); + +#ifndef NDEBUG + printf("%ld.%06u: type=%u code=%u value=%u\n", + (long) tv.tv_sec, (unsigned int) tv.tv_usec, + event.type, event.code, event.value); + fflush(stdout); +#endif + + switch (event.value) + { + case 1: /* Regular press */ + assert(time_at_last_press==0); + assert(event_already_fired==0); + time_at_last_press = tv.tv_sec; + break; + case 2: /* Auto repeat press */ + if (time_at_last_press == 0) + { + /* This could happen if the user start pressing before the kernel starts */ + time_at_last_press = tv.tv_sec; + } + break; + case 0: /* Release */ + if (event_already_fired != 0) + { + printf("Edison PWR button was pressed more than 2s and released\n"); + fflush(stdout); + system(argv[2]); + } + time_at_last_press = 0; + event_already_fired = 0; + break; + default: + printf("Warning: unhandled PWR button event value: %u\n", event.value); + } + } + + close(fd); + + return 0; +} diff --git a/meta-edison-distro/recipes-support/pwr-button-handler/files/pwr-button-handler.service b/meta-edison-distro/recipes-support/pwr-button-handler/files/pwr-button-handler.service new file mode 100644 index 0000000..a53c10b --- /dev/null +++ b/meta-edison-distro/recipes-support/pwr-button-handler/files/pwr-button-handler.service @@ -0,0 +1,10 @@ +[Unit] +Description=Edison PWR button handler + +[Service] +ExecStart=/usr/bin/pwr_button_handler "/bin/systemctl start blink-led" "sh -c \"/bin/systemctl stop blink-led && /usr/bin/configure_edison --enableOneTimeSetup\"" +Restart=on-failure + +[Install] +WantedBy=default.target + diff --git a/meta-edison-distro/recipes-support/pwr-button-handler/pwr-button-handler_0.1.bb b/meta-edison-distro/recipes-support/pwr-button-handler/pwr-button-handler_0.1.bb new file mode 100644 index 0000000..f58aeb0 --- /dev/null +++ b/meta-edison-distro/recipes-support/pwr-button-handler/pwr-button-handler_0.1.bb @@ -0,0 +1,37 @@ +DESCRIPTION = "Daemon listening to Edison PWR long button press, and starting OOBE service when it happens" +SECTION = "base" +LICENSE = "MIT" +LIC_FILES_CHKSUM = "file://${COMMON_LICENSE_DIR}/MIT;md5=0835ade698e0bcf8506ecda2f7b4f302" + +FILESEXTRAPATHS_prepend := "${THISDIR}/files/" + +inherit systemd + +SYSTEMD_SERVICE_${PN} = "pwr-button-handler.service" + +SRC_URI = "file://pwr-button-handler.c" +SRC_URI += "file://pwr-button-handler.service" + +S = "${WORKDIR}" + +do_compile() { + ${CC} $CFLAGS -DNDEBUG -o pwr_button_handler pwr-button-handler.c +} + +do_install() { + install -d ${D}${bindir} + install -m 0755 pwr_button_handler ${D}${bindir} + + # Copy service file + install -d ${D}/${systemd_unitdir}/system + install -m 644 ${WORKDIR}/pwr-button-handler.service ${D}/${systemd_unitdir}/system + + # And enable it at startup + install -d ${D}${sysconfdir}/systemd/system/default.target.wants + ln -sf ${systemd_unitdir}/system/pwr-button-handler.service \ + ${D}${sysconfdir}/systemd/system/default.target.wants/pwr-button-handler.service +} + +FILES_${PN} = "${base_libdir}/systemd/system/pwr-button-handler.service" +FILES_${PN} += "${sysconfdir}/systemd/system/default.target.wants/pwr-button-handler.service" +FILES_${PN} += "${bindir}/pwr_button_handler" diff --git a/meta-edison-distro/recipes-support/tcpdump/tcpdump-4.1.1/0001-minimal-IEEE802.15.4-allowed.patch b/meta-edison-distro/recipes-support/tcpdump/tcpdump-4.1.1/0001-minimal-IEEE802.15.4-allowed.patch new file mode 100644 index 0000000..9d3d60d --- /dev/null +++ b/meta-edison-distro/recipes-support/tcpdump/tcpdump-4.1.1/0001-minimal-IEEE802.15.4-allowed.patch @@ -0,0 +1,22 @@ +From: Sergey Lapin <slapin@slind.org> +Date: Wed, 28 Jan 2009 16:34:15 +0300 +Subject: [PATCH] minimal IEEE802.15.4 allowed + +--- + tcpdump.c | 3 +++ + 1 files changed, 3 insertions(+), 0 deletions(-) + +diff --git a/tcpdump.c b/tcpdump.c +index 06683af..fbc944c 100644 +--- a/tcpdump.c ++++ b/tcpdump.c +@@ -282,6 +282,9 @@ static struct printer printers[] = { + #ifdef DLT_MFR + { mfr_if_print, DLT_MFR }, + #endif ++#ifdef DLT_IEEE802_15_4 ++ { raw_if_print, DLT_IEEE802_15_4 }, ++#endif + #if defined(DLT_BLUETOOTH_HCI_H4_WITH_PHDR) && defined(HAVE_PCAP_BLUETOOTH_H) + { bt_if_print, DLT_BLUETOOTH_HCI_H4_WITH_PHDR}, + #endif diff --git a/meta-edison-distro/recipes-support/tcpdump/tcpdump-4.1.1/configure.patch b/meta-edison-distro/recipes-support/tcpdump/tcpdump-4.1.1/configure.patch new file mode 100644 index 0000000..3955ddb --- /dev/null +++ b/meta-edison-distro/recipes-support/tcpdump/tcpdump-4.1.1/configure.patch @@ -0,0 +1,29 @@ +--- + aclocal.m4 | 1 - + configure.in | 1 + + 2 files changed, 1 insertions(+), 1 deletions(-) + +diff --git a/aclocal.m4 b/aclocal.m4 +index 40b5866..0c662b0 100644 +--- a/aclocal.m4 ++++ b/aclocal.m4 +@@ -40,7 +40,6 @@ dnl + AC_DEFUN(AC_LBL_C_INIT_BEFORE_CC, + [AC_PREREQ(2.50) + AC_BEFORE([$0], [AC_LBL_C_INIT]) +- AC_BEFORE([$0], [AC_PROG_CC]) + AC_BEFORE([$0], [AC_LBL_FIXINCLUDES]) + AC_BEFORE([$0], [AC_LBL_DEVEL]) + AC_ARG_WITH(gcc, [ --without-gcc don't use gcc]) +diff --git a/configure.in b/configure.in +index 11257c9..7f9591c 100644 +--- a/configure.in ++++ b/configure.in +@@ -19,6 +19,7 @@ AC_REVISION($Revision: 1.204 $) + AC_PREREQ(2.50) + AC_INIT(tcpdump.c) + ++AC_PROG_CC + AC_CANONICAL_HOST + + AC_LBL_C_INIT_BEFORE_CC(V_CCOPT, V_INCLS) diff --git a/meta-edison-distro/recipes-support/tcpdump/tcpdump-4.1.1/ipv6-cross.patch b/meta-edison-distro/recipes-support/tcpdump/tcpdump-4.1.1/ipv6-cross.patch new file mode 100644 index 0000000..c8a0373 --- /dev/null +++ b/meta-edison-distro/recipes-support/tcpdump/tcpdump-4.1.1/ipv6-cross.patch @@ -0,0 +1,41 @@ +--- + configure.in | 12 ++++++++---- + 1 files changed, 8 insertions(+), 4 deletions(-) + +diff --git a/configure.in b/configure.in +index eb3e5e8..11257c9 100644 +--- a/configure.in ++++ b/configure.in +@@ -181,8 +181,9 @@ yes) AC_MSG_RESULT(yes) + ipv6=no + ;; + esac ], +- +- AC_TRY_RUN([ /* AF_INET6 available check */ ++[ ++ if test x"$cross_compiling" != "xyes"; then ++ AC_TRY_RUN([ /* AF_INET6 avalable check */ + #include <sys/types.h> + #include <sys/socket.h> + main() +@@ -201,7 +202,10 @@ main() + ipv6=no], + [ AC_MSG_RESULT(no) + ipv6=no] +-)) ++ ) ++else ++ AC_MSG_FAILURE([Unable to check for ipv6 when crosscompiling, please specify.]) ++fi]) + + ipv6type=unknown + ipv6lib=none +@@ -316,7 +320,7 @@ if test "$ipv6" = "yes" -a "$ipv6lib" != "none"; then + fi + + +-if test "$ipv6" = "yes"; then ++if test x"$cross_compiling" != "xyes" -a "$ipv6" = "yes"; then + # + # XXX - on Tru64 UNIX 5.1, there is no "getaddrinfo()" + # function in libc; there are "ngetaddrinfo()" and diff --git a/meta-edison-distro/recipes-support/tcpdump/tcpdump-4.1.1/tcpdump_configure_no_-O2.patch b/meta-edison-distro/recipes-support/tcpdump/tcpdump-4.1.1/tcpdump_configure_no_-O2.patch new file mode 100644 index 0000000..7929da5 --- /dev/null +++ b/meta-edison-distro/recipes-support/tcpdump/tcpdump-4.1.1/tcpdump_configure_no_-O2.patch @@ -0,0 +1,42 @@ +--- + configure | 8 ++++---- + 1 files changed, 4 insertions(+), 4 deletions(-) + +diff --git a/configure b/configure +index cb51d19..73d51af 100755 +--- a/configure ++++ b/configure +@@ -2691,13 +2691,13 @@ if test "$ac_test_CFLAGS" = set; then + CFLAGS=$ac_save_CFLAGS + elif test $ac_cv_prog_cc_g = yes; then + if test "$GCC" = yes; then +- CFLAGS="-g -O2" ++ CFLAGS="-g" + else + CFLAGS="-g" + fi + else + if test "$GCC" = yes; then +- CFLAGS="-O2" ++ CFLAGS="" + else + CFLAGS= + fi +@@ -2830,7 +2830,7 @@ ac_compiler_gnu=$ac_cv_c_compiler_gnu + if test "$GCC" = yes ; then + if test "$SHLICC2" = yes ; then + ac_cv_lbl_gcc_vers=2 +- V_CCOPT="-O2" ++ V_CCOPT="" + else + { echo "$as_me:$LINENO: checking gcc version" >&5 + echo $ECHO_N "checking gcc version... $ECHO_C" >&6; } +@@ -2847,7 +2847,7 @@ fi + { echo "$as_me:$LINENO: result: $ac_cv_lbl_gcc_vers" >&5 + echo "${ECHO_T}$ac_cv_lbl_gcc_vers" >&6; } + if test $ac_cv_lbl_gcc_vers -gt 1 ; then +- V_CCOPT="-O2" ++ V_CCOPT="" + fi + fi + else diff --git a/meta-edison-distro/recipes-support/tcpdump/tcpdump_4.1.1.bb b/meta-edison-distro/recipes-support/tcpdump/tcpdump_4.1.1.bb new file mode 100644 index 0000000..6b81ed0 --- /dev/null +++ b/meta-edison-distro/recipes-support/tcpdump/tcpdump_4.1.1.bb @@ -0,0 +1,41 @@ +DESCRIPTION = "A sophisticated network protocol analyzer" +HOMEPAGE = "http://www.tcpdump.org/" +LICENSE = "BSD" +LIC_FILES_CHKSUM = "file://LICENSE;md5=1d4b0366557951c84a94fabe3529f867" +SECTION = "console/network" +DEPENDS = "libpcap" +PR = "r1" + +SRC_URI = " \ + http://www.tcpdump.org/release/tcpdump-${PV}.tar.gz \ + file://tcpdump_configure_no_-O2.patch \ + file://0001-minimal-IEEE802.15.4-allowed.patch \ + file://ipv6-cross.patch \ + file://configure.patch \ +" + +inherit autotools +# ac_cv_linux_vers=${ac_cv_linux_vers=2} + +EXTRA_OECONF = "--without-crypto \ + ${@base_contains('DISTRO_FEATURES', 'ipv6', '--enable-ipv6', '--disable-ipv6', d)}" + +do_configure() { + # AC_CHECK_LIB(dlpi.. was looking to host /lib + sed -i 's:-L/lib:-L${STAGING_LIBDIR}:g' ./configure.in + + gnu-configize + autoconf + oe_runconf + sed -i 's:/usr/lib:${STAGING_LIBDIR}:' ./Makefile + sed -i 's:/usr/include:${STAGING_INCDIR}:' ./Makefile +} + +do_install_append() { + # tcpdump 4.1.1 installs a copy to /usr/sbin/tcpdump.4.1.1 + rm -f ${D}${sbindir}/tcpdump.${PV} +} + +SRC_URI[md5sum] = "d0dd58bbd6cd36795e05c6f1f74420b0" +SRC_URI[sha256sum] = "e6cd4bbd61ec7adbb61ba8352c4b4734f67b8caaa845d88cb826bc0b9f1e7f0a" + diff --git a/meta-edison-distro/recipes-support/watchdog-sample/watchdog-sample.bb b/meta-edison-distro/recipes-support/watchdog-sample/watchdog-sample.bb new file mode 100644 index 0000000..f0369bc --- /dev/null +++ b/meta-edison-distro/recipes-support/watchdog-sample/watchdog-sample.bb @@ -0,0 +1,46 @@ +DESCRIPTION = "Watchdog sample daemon" +SECTION = "base" +LICENSE = "MIT" +LIC_FILES_CHKSUM = "file://${COMMON_LICENSE_DIR}/MIT;md5=0835ade698e0bcf8506ecda2f7b4f302" + +FILESEXTRAPATHS_prepend := "${THISDIR}/watchdog-sample/" + +SRC_URI += "file://watchdog-sample.service" +SRC_URI += "file://watchdog-sample.c" + +SYSTEMD_SERVICE_${PN} = "watchdog-sample.service" + +RDEPENDS_${PN} = "systemd" +DEPENDS = "systemd" + +S = "${WORKDIR}" + +do_compile() { + $CC $CFLAGS ${S}/watchdog-sample.c `pkg-config --cflags --libs --print-errors libsystemd` -o watchdog-sample +} + +do_install() { + # install service file + install -d ${D}${systemd_unitdir}/system + install -c -m 0644 ${WORKDIR}/watchdog-sample.service ${D}${systemd_unitdir}/system + + # enable the service + install -d ${D}${sysconfdir}/systemd/system/basic.target.wants + ln -sf ${systemd_unitdir}/system/watchdog-sample.service \ + ${D}${sysconfdir}/systemd/system/basic.target.wants/watchdog-sample.service + + # install watchdog binary + install -d ${D}${bindir} + install -c -m 0755 ${B}/watchdog-sample ${D}${bindir} +} + +FILES_${PN} = "${base_libdir}/systemd/system/watchdog-sample.service" +FILES_${PN} += "${sysconfdir}/systemd/system/basic.target.wants/watchdog-sample.service" +FILES_${PN} += "${bindir}/watchdog-sample" + +# As this package is tied to systemd, only build it when we're also building systemd. +python () { + if not oe.utils.contains ('DISTRO_FEATURES', 'systemd', True, False, d): + raise bb.parse.SkipPackage("'systemd' not in DISTRO_FEATURES") +} + diff --git a/meta-edison-distro/recipes-support/watchdog-sample/watchdog-sample/watchdog-sample.c b/meta-edison-distro/recipes-support/watchdog-sample/watchdog-sample/watchdog-sample.c new file mode 100644 index 0000000..7bba6ff --- /dev/null +++ b/meta-edison-distro/recipes-support/watchdog-sample/watchdog-sample/watchdog-sample.c @@ -0,0 +1,92 @@ +/* + * Watchdog daemon sample code + * + * Copyright (c) 2014, Intel Corporation. + * Simon Desfarges <simonx.desfarges@intel.com> + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN + * THE SOFTWARE. + */ + +/* + * This file is a simple example on the use of the systemd SW watchdog. + * At startup, the program will create a file in /tmp/watchdog-sample.tmp; + * if the file is removed while the program is running, the program will not + * ping systemd watchdog, resulting in a restart of the program (depending on + * the service configuration). + * This file allow to simulate a hang in the watchdog-critical program. + */ + +#include <stdlib.h> +#include <stdio.h> +#include <errno.h> +#include <unistd.h> +#include <sys/stat.h> +#include <fcntl.h> + +#include <systemd/sd-daemon.h> + +int main(int argc, char * argv[]) { + uint32_t wd_timeout; // in seconds + uint32_t sleep_time; + int err; + char path[] = "/tmp/watchdog-sample.tmp"; + int fd; + if(argc == 2) { + wd_timeout = atoi(argv[1]); + fprintf(stderr, SD_WARNING "Will ping every %ds \n", wd_timeout/2); + } else { + errno=EINVAL; + sd_notifyf(0, SD_EMERG "STATUS=Failed to start up: %s\n" + "ERRNO=%i", + strerror(errno), errno); + exit(-1); + } + + if(wd_timeout == 0) { + sd_notify(0, "Systemd SW watchdog disabled, nothing to do\n"); + exit(0); + } + + fd = open(path, O_RDWR | O_CREAT | O_SYNC, 777); + if(fd == -1) { + sd_notifyf(0, SD_EMERG "STATUS=Failed to create file: %s\n" + "ERRNO=%i", + strerror(errno), errno); + exit(-1); + } + write(fd,"A", 1); + fsync(fd); + close(fd); + + /* Here, systemd WD is enabled and waiting for ping */ + /* wd_timeout variable contains the timeout. We need to ping every wd_timeout/2 */ + sleep_time = wd_timeout/2; + sd_notify(0, "READY=1\n"); + + while(1) { + sd_notify(0, "WATCHDOG=1\n"); + sleep(sleep_time); + + if(access(path, F_OK) == -1) { + sd_notify(0, SD_EMERG "TEMP file disappeared, falling in hang mode\n"); + while(1); + } + } +} + diff --git a/meta-edison-distro/recipes-support/watchdog-sample/watchdog-sample/watchdog-sample.service b/meta-edison-distro/recipes-support/watchdog-sample/watchdog-sample/watchdog-sample.service new file mode 100644 index 0000000..dacb5e0 --- /dev/null +++ b/meta-edison-distro/recipes-support/watchdog-sample/watchdog-sample/watchdog-sample.service @@ -0,0 +1,15 @@ +[Unit] +Description=Watchdog sample daemon + +[Service] +Environment="Timeout=30" +ExecStart=/usr/bin/watchdog-sample ${Timeout} +WatchdogSec=30s +Restart=on-failure +StartLimitInterval=4min +StartLimitBurst=4 +StartLimitAction=reboot-force + +[Install] +WantedBy=basic.target + |