Monday, February 29, 2016

Mysql for FreePBX
·       Freepbx stores extensions in database ‘asterisk’
Details

Username :asteriskuser
Password:amp109
Databasename:asterisk

(these are present in /etc/amportal.conf)

·       You can login to database using
mysql -u asteriskuser -pamp109 asterisk
·       Show tables; will shows tables involved
·       Users tables stores extension information

Like extension ,password ,name ,sipname etc.







Installing IonCube in Asterisknow(Lighttpd integration)


It requires two module encoder and decoder (loader)

Encoding


1. Encoder download trial version from

After installation encode the php files
New Project-Select Source and Target Folder start conversion.

2. Place the encoded files in /var/lib/asterisk/static-http/config/ (Citel)


Decoding/Loading

Needs library (ioncube_loader_lin_5.x.so) to be loaded to decode encoded files
X= version of php
i.e  PHP 5.2 or PHP 5.3

1. Download Decoder (loader)
Download the freely available decoders from this url (Linux X86)
http://www.ioncube.com/loaders.php
i.e http://downloads2.ioncube.com/loader_downloads/ioncube_loaders_lin_x86.zip

2. Copy to asterisk machine

Extract the file /ioncube_loaders_lin_x86.zip and copy ioncube_loader_lin_5.2.so from it and place in asterisk machine
eg in
/usr/local/lib/ioncube/ioncube_loader_lin_5.2.so

3. Locate the path of php.ini using phpinfo(); function

2. In Asterisknow 1.0.2 It is /usr/local/lib

3. If no php.ini file present in /usr/loca/lib create a file and
Add following line in it

[PHP]
zend_extension=/usr/local/lib/ioncube/ioncube_loader_lin_5.2.so




Restart Lighttpd
Service gui-lighttpd restart


Debugging

In case of issues please use the file ioncube-loader-helper.php present in ioncube_loaders_lin_x86.zip


OS optimization to Run on Flash Card

1.   Disable Access Time Attributes & changing journaling method parameter for the disk Access


A) Each time a file is accessed OS updates its access time parameter by writing to disk
To prevent this we have to use noatime parameter during filesystem mounting in fstab.
 
Also to reduce write cycle, use data=writeback ensure data less frequently written.(might have consequences in previous data appearing on crash).
 
        LABEL=/ / ext3 defaults,noatime,nodiratime,data=writeback  1 1

B) Then run following command before rebooting to make change journaling type. This is necessary otherwise system won’t start.
        tune2fs -o journal_data_writeback /dev/hda1
(assuming hda1 is /)
C) see whether it has changed or not using 
        tune2fs -l /dev/hda1 | more
(assuming hda1 is /)
 
Data=journal is advisable to robust filesystem, tune2fs -o journal_data /dev/hda1
 
 
 
Recover Linux if it doesnt boot
1.Linux rescue
2.chroot /mnt/sysimage
3.vi /mnt/sysimage/etc/fstab then change any
 

2.   Increasing writeback timings for the disk disk


In /etc/rc.local
echo 1500 > /proc/sys/vm/dirty_writeback_centisecs

other two option not sure has to be added or not
echo 20 > /proc/sys/vm/dirty_ratio
echo 10 > /proc/sys/vm/dirty_background_ratio
 
 

3.   Disable Swap

disable swap (remove swap volume from /etc/fstab)

or in /etc/rc.sysinit add following line
swapoff  /dev/swap_partition
 

4.   Put frequenting access temporary areas in Ram

/etc/fstab

tmpfs      /var/log        tmpfs        defaults,noatime           0    0
tmpfs      /tmp            tmpfs        defaults,noatime           0    0
tmpfs      /var/tmp        tmpfs        defaults,noatime           0    0 
(PS: It might be a good idea to have a swap partition when using tmpfs.)
Ramfs only uses ram space and has to provide limit otherwise will grow dynamically
Tmpfs uses swap space so it will write to disk.


5.   Change the IO-Scheduler for Flash Drive

Usually Linux uses I/O schedulers that assists read and writes to happen in a sequential matter, however flash based drives are much simpler than traditional hard drives and have no seek penalty. For that reason "noop" is much better suited for flash-drives since it just pushes things forward in the order data come in (FIFO).

Edit the /etc/grub.conf file. Add “elevator=noop” to the kernel line.
  1. kernel /vmlinuz-2.6.27.5-117.fc10.i686 ro root=/dev/sda2 rhgb quiet elevator=noop
(or to change on fly  # echo "noop" > /sys/block/sda/queue/scheduler)


ToD0:
1. Find list of var files that need to put to Ramdisk
2. Find how much will each require space
3. Script to delete files after exceeding limits.


Installing Webmin in Trixbox.2.6


1.    wget http://internap.dl.sourceforge.net/sourceforge/webadmin/webmin-1.500-1.noarch.rpm
2.    rpm -ivh webmin-1.500-1.noarch.rpm
3.    access the https://ipaddress:10000
4.    Username & password is that of root user in linux system (trixbox)
Tips:
1.to connect in mysql in trixbox root & passw0rd.
 
Third Party Tools
 
 
 
Theme Installation
http://code.google.com/p/webmin-theme-stressfree/
Main page after login should be this
in this add following links

To install open Webmin and browse to Webmin -> Webmin Configuration -> Webmin Themes 
Select the downloaded archive from your local disk and press the Install Theme button. 
Once installed change the Current Theme dropdown to StressFree Theme and press the Change button.
Note: This will change the default theme for Webmin but will not effect users who have selected a personal theme. If you have enabled the StressFree theme as the default yet find it is not applied check your personal theme settings:
§                 Category -> Webmin -> Webmin Users.
§                 Select your username (e.g. root).
§                 Open "User interface options" and ensure the "Personal Theme" field is set to either "From Webmin Configuration" or to the specific theme name (StressFree).

Donate.cgi ->remove print donate and check

Web based Terminal -Ajaxterm

Looking into some web based SSH Terminal, Found a really nice Tool Ajaxterm –

Ajaxterm is a web based terminal.
This lets to you SSH trough web browser


Installation steps for Ajaxterm

 
1.      wget  http://antony.lesuisse.org/software/ajaxterm/files/Ajaxterm-0.10.tar.gz
     (or Attached below)    
 
2.      tar -xvzf Ajaxterm-0.10.tar.gz
  1. Now build Ajaxterm as follows.
# ./configure --prefix=/usr/local
# make
# make install
 

  1. Add following lines in /etc/httpd/conf/http.conf
(Proxying is needed for remote access)

   
   ProxyRequests Off
  
           Order deny,allow
           Allow from all
  
   ProxyPass /ajaxterm/ http://localhost:8022/
   ProxyPassReverse /ajaxterm/ http://localhost:8022/

  1. service httpd reload
  2. /usr/local/Ajaxterm-0.10/ajaxterm.py &
  3. Access the page through http://ip_address/ajaxterm/
(leading / is necessary)


Incase you are using lighttpd
Edit lighttpd.conf (settings for proxy server )

proxy.server    = ( "/ajaxterm/" =>
                   (
                    ( "host" => "127.0.0.1",
                      "port" => 8022
                     )
                    )
                   )


Sunday, February 21, 2016

LIRC For OPENELEC 

1.Add support LIRC in RPI
Add following in config.txt
it can be either done removing flash drive and from windows accessing
boot partiton ( as it fat 32) or using

root/openelec
 Command: “mount -o remount,rw /flash”

Config.txt
==============
dtoverlay=lirc-rpi or
device_tree_overlay=lirc-rpi
# gpio_in_pin=18

2.reboot

3.Connect
Wires 5 or 3.3 V according to Module
and Signal to GPIO18,
For mY Module HS0038A2 I USED 5v Suply instead of 3.3

4. Test
modprobe lirc_rpi
mode2 -d /dev/lirc0
(you may need to killall lircd)
press button

it should display some code.

5.
Learnig new remote or ( if there is your remote - download from http://lirc.sourceforge.net/remotes/
To Learn new remote killall lircd

irrecod /storage/.config/lircd.conf
this will create /storage/.config/lircd.conf.conf

replace it with /storage/.config/lircd.conf

Press as Instructed , Enter Key Names are descibed below.


sample inputs..
"Now enter the names for the buttons.

Please enter the name for the next button (press to finish recording)
KEY_1

Now hold down button "KEY_1".

Please enter the name for the next button (press to finish recording)
KEY_2




###CISCO Remtoe Sample=======
begin remote

  name  /storage/.config/lircd.conf.conf
  bits           16
  flags SPACE_ENC|CONST_LENGTH
  eps            30
  aeps          100

  header       9019  4460
  one           591  1648
  zero          591   540
  ptrail        592
  repeat       9020  2223
  pre_data_bits   16
  pre_data       0x20DF
  gap          107834
  toggle_bit_mask 0x0

      begin codes
          KEY_1                    0x8877
          KEY_2                    0x48B7
          KEY_3                    0xC837
          KEY_4                    0x28D7
          KEY_5                    0xA857
          KEY_6                    0x6897
          KEY_7                    0xE817
          KEY_7                    0xE817
          KEY_8                    0x18E7
          KEY_9                    0x9867
          KEY_0                    0x08F7
          KEY_UP                   0x00FF
          KEY_DOWN                 0x807F
          KEY_OK                   0x22DD
          KEY_OK                   0x22DD
          KEY_RIGHT                0x40BF
          KEY_LEFT                 0xC03F
          KEY_POWER                0x10EF
          KEY_SLEEP                0x708F
          KEY_MUTE                 0x906F
          KEY_PAUSE                0x7689
          KEY_PLAY                 0xB04F
          KEY_MENU                 0xC23D
      end codes

end remote

6.
After a reboot, you can see if your remote is working at this point by using Putty to ssh into your PI 2 and typing

irw

and if things are working you will see the remote's keys being recognized and displayed on screen.

Tuesday, February 16, 2016

Controlling Rasperry PI /XMBC/KODI Using TV Remote using HDMI CEC


HDMI-CEC allows devices connected to your TV through HDMI ports to communicate back-and-forth with your TV. The devices can have some control over the TV, and the TV can have some control over the devices. This means you could control your Blu-ray player through your TV remote, for example. Or devices can automatically change your TV’s input when they need to do something.


Samsung - Anynet+
Sony - BRAVIA Link or BRAVIA Sync
Sharp - Aquos Link
Hitachi - HDMI-CEC
AOC - E-link
Pioneer - Kuro Link
Toshiba - Regza Link or CE-Link
Onkyo - RIHD (Remote Interactive over HDMI)
LG - SimpLink
Panasonic - VIERA Link or HDAVI Control or EZ-Sync
Philips - EasyLink
Mitsubishi - NetCommand for HDMI
Runco International - RuncoLink

Note: Buy a Good Quality cable supporting CEC standard, Some Low quality cables dont have enough 
wire to carry CEC Signals.I have old cable and i i pressed VIerra Link on Panasonic TV it was coming "Feature not available".After changing cable it displayed The "Player "
i boiught one from Amazon at Rs 150 and its works great - Ultraprolink Upl Hdmi - Hdmi Cable (2M)





In raspberry PI you will see




Now with TV scrolls button i can control Raspberry PI and even do search using T9 buttons on remote.


Wednesday, February 10, 2016

Sigcomp in Asterisk Patch

Sigcomp in Asterisk - Part -2


chan_sip.c

///Add following//
#include "stdafx.h"
#include "tcomp_manager.h" /* TinySIGCOMP API functions. */

#include "tsk_debug.h"

#define COMPARTMENT_ID "urn:uuid:2e5fdc76-00be-4314-8202-1116fa82a473"
#define OUTPUT_BUFFER_SIZE 2000
#define DECOMPRESSION_MEMORY_SIZE 65530
#define COMPARTMENT_ID1 "urn:uuid:2e5fdc76-00be-4314-8202-1116fa82a474" // My first compartment id
#define COMPARTMENT_ID2 "urn:uuid:2e5fdc76-00be-4314-8202-1116fa82a475" // My second compartment id

#define IS_STREAM 0 // Using reliable transport
#define STREAM_ID 678 // stream identifier

#define MAX_BUFFER_SIZE 0xfff0

#define LOOP_COUNT 100

#define DECOMP_NACK_4_TEST 0


Change Following functions

static int __sip_xmit(struct sip_pvt *p, struct ast_str *data, int len)
{
int res = 0;
const struct ast_sockaddr *dst = sip_real_dst(p);


int i = 0;
size_t outLen = 0;
int temp;
tcomp_manager_handle_t *comp_manager = tsk_null;
tcomp_result_t *comp_result = tsk_null;
//char *message;
char comp_buff[MAX_BUFFER_SIZE];

if(sip_cfg.sigcompsupport)
{
comp_manager = tcomp_manager_create();

// Add SIP/Presence dictionnaries //
tcomp_manager_addSipSdpDictionary(comp_manager);
tcomp_manager_addPresenceDictionary(comp_manager);

comp_result = tcomp_result_create();

//Sets compartment Ids //
tcomp_result_setCompartmentId(comp_result, COMPARTMENT_ID1, strlen(COMPARTMENT_ID1));

// Set DMS and SMS //
tcomp_manager_setDecompression_Memory_Size(comp_manager, 32768);
tcomp_manager_setCycles_Per_Bit(comp_manager, 64);
tcomp_manager_setState_Memory_Size(comp_manager, 32768);


//Compression using manager  comp_buff will contain compressed binary message
outLen = tcomp_manager_compress(comp_manager, COMPARTMENT_ID1, strlen(COMPARTMENT_ID1),(char *) data->str,len, comp_buff, MAX_BUFFER_SIZE, IS_STREAM);
// Close compartments
//tcomp_manager_closeCompartment(comp_manager, COMPARTMENT_ID1, strlen(COMPARTMENT_ID1));

}
// Delete Results
//TSK_OBJECT_SAFE_FREE(comp_result);
// Delete managers
//TSK_OBJECT_SAFE_FREE(comp_manager);
ast_debug(2, "Trying to put '%.11s' onto %s socket destined for %s\n", data->str, get_transport_pvt(p), ast_sockaddr_stringify(dst));

if (sip_prepare_socket(p) < 0) {
return XMIT_ERROR;
}

if (p->socket.type == SIP_TRANSPORT_UDP) {
if(sip_cfg.sigcompsupport)
                res = ast_sendto(p->socket.fd, comp_buff, outLen, 0, dst);
else
                res = ast_sendto(p->socket.fd, data->str, len, 0, dst);

} else if (p->socket.tcptls_session) {
res = sip_tcptls_write(p->socket.tcptls_session, data->str, len);
} else {
ast_debug(2, "Socket type is TCP but no tcptls_session is present to write to\n");
return XMIT_ERROR;
}

if (res == -1) {
switch (errno) {
case EBADF: /* Bad file descriptor - seems like this is generated when the host exist, but doesn't accept the UDP packet */
case EHOSTUNREACH: /* Host can't be reached */
case ENETDOWN: /* Interface down */
case ENETUNREACH: /* Network failure */
case ECONNREFUSED:      /* ICMP port unreachable */
res = XMIT_ERROR; /* Don't bother with trying to transmit again */
}
}
if (res != len) {
ast_log(LOG_WARNING, "sip_xmit of %p (len %d) to %s returned %d: %s\n", data, len, ast_sockaddr_stringify(dst), res, strerror(errno));
}

return res;
}


static int sipsock_read(int *id, int fd, short events, void *ignore)
{
struct sip_request req;
struct ast_sockaddr addr;
int res,i;
static char readbuf[65535]={'\0'};
char tempbuff[65535]={'\0'};
size_t outLen = 0;
int temp;
tcomp_manager_handle_t *decomp_manager = tsk_null;
tcomp_result_t *decomp_result = tsk_null;
char decomp_buff[MAX_BUFFER_SIZE]={'\0'};


memset(&req, 0, sizeof(req));
res = ast_recvfrom(fd, readbuf, sizeof(readbuf) - 1, 0, &addr);
        if (res < 0) {
#if !defined(__FreeBSD__)
                if (errno == EAGAIN)
                {       ast_log(LOG_NOTICE, "SIP: Received packet with bad UDP checksum\n");
                        printf( "SIP: Received packet with bad UDP checksum\n");
}
                else
#endif
                if (errno != ECONNREFUSED)
                { 
ast_log(LOG_WARNING, "Recv error: %s\n", strerror(errno));
                        printf("Recv error: %s\n", strerror(errno));
}
                return 1;
        }

        readbuf[res] = '\0';


if(sip_cfg.sigcompsupport)
{
decomp_manager=tcomp_manager_create();

/* Add SIP/Presence dictionnaries */
tcomp_manager_addSipSdpDictionary(decomp_manager);
tcomp_manager_addPresenceDictionary(decomp_manager);


decomp_result = tcomp_result_create();

/* Sets compartment Ids */
tcomp_result_setCompartmentId(decomp_result, COMPARTMENT_ID1, strlen(COMPARTMENT_ID1));

/* Set DMS and SMS */
tcomp_manager_setDecompression_Memory_Size(decomp_manager, 32768);
tcomp_manager_setCycles_Per_Bit(decomp_manager, 64);
tcomp_manager_setState_Memory_Size(decomp_manager, 32768);

memset(decomp_buff, '\0', MAX_BUFFER_SIZE);


// set the output buffer where to copy decompressed message
tcomp_result_setOutputBuffer(decomp_result, decomp_buff, MAX_BUFFER_SIZE, IS_STREAM, STREAM_ID); 
outLen = tcomp_manager_decompress(decomp_manager, readbuf,res, decomp_result);
if(outLen) // OK
{
//decomp_buff contains decompressed message provide the compartment id --> save temp states
tcomp_manager_provideCompartmentId(decomp_manager, decomp_result);
}
else // NOK //NACK If decompression failed
{
sip_cfg.sigcompsupport=FALSE;
//decomp_manager->decompress(decomp_result.getNackInfo()->getBuffer(), decomp_result.getNackInfo()->getSize(), &decomp_result);
// Decompression failed --> handle NACK (done by remote party)
// NACK will be retourned only if SigCompVersion >= 2
// NACK must be sent to the remote party (SIP/IMS use-case) over the network
}
//tcomp_manager_closeCompartment(decomp_manager, COMPARTMENT_ID1, strlen(COMPARTMENT_ID1));
//delete objects
}
// Delete Results
//TSK_OBJECT_SAFE_FREE(decomp_result);
// Delete managers
//TSK_OBJECT_SAFE_FREE(decomp_manager);

if (!(req.data = ast_str_create(SIP_MIN_PACKET))) {
return 1;
}

if(sip_cfg.sigcompsupport && outLen)
{
if (ast_str_set(&req.data, 0, "%s", decomp_buff) == AST_DYNSTR_BUILD_FAILED) {
return -1;
}
}
else 
{
if (ast_str_set(&req.data, 0, "%s", readbuf) == AST_DYNSTR_BUILD_FAILED) {
return -1;
}
}
req.len = res;
req.socket.fd = sipsock;
set_socket_transport(&req.socket, SIP_TRANSPORT_UDP);
req.socket.tcptls_session = NULL;
req.socket.port = htons(ast_sockaddr_port(&bindaddr));

handle_request_do(&req, &addr);
deinit_req(&req);

return 1;
}
Sigcomp in asterisk - Part -1


Libraries for Sigcomp
  1. Libsigcomp – C++ library .due to C++ codes its hard to integrate in Asterisk
  2. tinySIGCOMP – C library and part of doubango Stack .

In asterisk 1.8.3.2 We are using tinySIGCOMP ( needs tinySAK  )

Issues
Asterisk uses PTHREAD_MUTEX_RECURSIVE_NP while Sigcomp uses PTHREAD_MUTEX_RECURSIVE ,Centos & Xtensa Kernel Also has Non –portable version (NP) version so Sigcomp won’t Compile .


Getting Sources
Doubango 2.0 has to be used ,in TINYXCAP we are using Doubango 1.0

Cd
asterisk_src/add-ons/sigcomp



Compile tinySAK
Cd tinysak

Sh autogen.sh
./configure

replace THREAD_MUTEX_RECURSIVE in src/tsk_mutex.c to PTHREAD_MUTEX_RECURSIVE_NP

Edit tinySAK/src/Makefile & tinySAK/test/Makefile  and replace
LIBTOOL = $(SHELL) $(top_builddir)/libtool with LIBTOOL= libtool

Edit tinySAK/test/Makefile and following
LDFLAGS =-lpthread


Make install will install libraries and headers in
/usr/local/include/tinySAK/*.h

And in

/usr/local/lib/libtinySAK.la
/usr/local/lib/libtinySAK.a
/usr/local/lib/libtinySAK.so.0.0.0


Compiling SIGCOMP

Cd tinySIGCOMP

Add Makefile and following path

#APP := lib$(PROJECT)_$(MARCH).$(EXT)
EXT := a
APP := libtinySIGCOMP.$(EXT)
CC := ${CROSS_COMPILE}gcc
#CFLAGS := $(CFLAGS_LIB) -I../tinySAK/src -I./src -I$(BUILDROOT_TOOL_PATH)/usr/include/libxml2
#LDFLAGS := $(LDFLAGS_LIB) -ltinySAK_$(MARCH) -L$(BUILDROOT_TOOL_PATH)/usr/lib
CFLAGS := $(CFLAGS_LIB) -I../tinySAK/src -I./src
LDFLAGS := $(LDFLAGS_LIB) -ltinySAK_$(MARCH) -L$(BUILDROOT_TOOL_PATH)/usr/lib


all: $(APP)

OBJS = \
            src/adler32.o\
            src/compress.o\
            src/deflate.o\
            src/tcomp.o\
            src/tcomp_buffer.o\
            src/tcomp_compartment.o\
            src/tcomp_compressordata.o\
            src/tcomp_compressordisp.o\
            src/tcomp_compressor_deflate.o\
            src/tcomp_compressor_dummy.o\
            src/tcomp_decompressordisp.o\
            src/tcomp_deflatedata.o\
            src/tcomp_deflatedata.ghost.o\
            src/tcomp_deflatedata.zlib.o\
            src/tcomp_dicts.o\
            src/tcomp_manager.o\
            src/tcomp_message.o\
            src/tcomp_nackinfo.o\
            src/tcomp_params.o\
            src/tcomp_reqfeed.o\
            src/tcomp_result.o\
            src/tcomp_state.o\
            src/tcomp_statehandler.o\
            src/tcomp_udvm.bytecopy.o\
            src/tcomp_udvm.o\
            src/tcomp_udvm.instructions.o\
            src/tcomp_udvm.nack.o\
            src/tcomp_udvm.operands.o\
            src/tcomp_udvm.statemanagment.o\
            src/trees.o\
            src/zutil.o\

           

$(APP): $(OBJS)
ifeq ($(EXT), a)
            $(AR) rcs $@ $^
else
            $(CC) $(LDFLAGS) -o $@ $^
endif

%.o: %.c
            $(CC) -c $(INCLUDE) $(CFLAGS) $< -o $@
           
install: $(APP)
            $(ANDROID_SDK_ROOT)/tools/adb remount
            $(ANDROID_SDK_ROOT)/tools/adb push $(APP) $(LIB_DIR)/$(APP)
            $(ANDROID_SDK_ROOT)/tools/adb shell chmod 777 $(LIB_DIR)/$(APP)
           
clean:
            @rm -f $(OBJS) $(APP)

Make to compile ,which generates sigcomp library libtinySIGCOMP.a


Integrating with Asterisk

Compiling with Asterisk
Change channels/Makefile as below :

--- channels/Makefile2  2012-01-22 12:47:55.000000000 +0530
+++ channels/Makefile   2012-01-23 11:50:49.000000000 +0530
@@ -71,7 +71,12 @@ dist-clean::

 $(if $(filter chan_iax2,$(EMBEDDED_MODS)),modules.link,chan_iax2.so): iax2-parser.o iax2-provision.o
 iax2-parser.o iax2-provision.o: _ASTCFLAGS+=$(call MOD_ASTCFLAGS,chan_iax2)
-$(if $(filter chan_sip,$(EMBEDDED_MODS)),modules.link,chan_sip.so): $(subst .c,.o,$(wildcard sip/*.c))
+AST_ADDONS_IMS=$(ASTTOPDIR)/addons/sigcomp
+chan_sip.o: _ASTCFLAGS+=-I$(AST_ADDONS_IMS) -I/home/alok/latest_cvs/asterisk_src/add-ons/sigcomp/tinySIGCOMP/src
+
+#chan_sip.o: _ASTCFLAGS+=-I$(AST_ADDONS_IMS)
+#$(if $(filter chan_sip,$(EMBEDDED_MODS)),modules.link,chan_sip.so): $(subst .c,.o,$(wildcard sip/*.c)) $(subst .c,.o,$(wildcard $(AST_ADDONS_IMS)/*.c))
+$(if $(filter chan_sip,$(EMBEDDED_MODS)),modules.link,chan_sip.so): $(subst .c,.o,$(wildcard sip/*.c)) /home/alok/latest_cvs/asterisk_src/add-ons/sigcomp/tinySIGCOMP/libtinySIGCOMP.a /usr/lib/libtinySAK.so.0
 $(subst .c,.o,$(wildcard sip/*.c)): _ASTCFLAGS+=$(call MOD_ASTCFLAGS,chan_sip)
 $(if $(filter chan_dahdi,$(EMBEDDED_MODS)),modules.link,chan_dahdi.so): sig_analog.o sig_pri.o sig_ss7.o
 sig_analog.o sig_pri.o sig_ss7.o: _ASTCFLAGS+=$(call MOD_ASTCFLAGS,chan_dahdi)


Asterisk-1.8.3.2/addons/sigcomp ->All sigcomp related files
Also link src folders of tinySIGCOMP and tinySAK

Files needed for SIGCOMP by asterisk
  1. libtinySIGCOMP.a
  2. libtinySAK.so.0.0.0



Asterisk Sigcomp Flow
__sip_xmit(Sends out packet)  ---------àCompression-àCompressed Packetàsipsock_read(Receives packets) àDecompression

Featured Post

XDP - Getting Started with XDP (Linux)