forked from Mirrors/freeswitch
incomplete framework for boost
git-svn-id: http://svn.openzap.org/svn/openzap/trunk@409 a93c3328-9c30-0410-af19-c9cd2b2d52af
This commit is contained in:
parent
ec0b259ecf
commit
2602a26dad
@ -67,7 +67,8 @@ $(SRC)/isdn/5ESSStateNT.c \
|
||||
$(SRC)/isdn/5ESSStateTE.c \
|
||||
$(SRC)/isdn/Q932mes.c \
|
||||
$(SRC)/zap_zt.c \
|
||||
$(SRC)/zap_wanpipe.c
|
||||
$(SRC)/zap_wanpipe.c \
|
||||
$(SRC)/zap_ss7_boost.c
|
||||
|
||||
OBJS=\
|
||||
$(SRC)/hashtable.o \
|
||||
@ -105,7 +106,8 @@ $(SRC)/isdn/5ESSStateNT.o \
|
||||
$(SRC)/isdn/5ESSStateTE.o \
|
||||
$(SRC)/isdn/Q932mes.o \
|
||||
$(SRC)/zap_zt.o \
|
||||
$(SRC)/zap_wanpipe.o
|
||||
$(SRC)/zap_wanpipe.o \
|
||||
$(SRC)/zap_ss7_boost.o
|
||||
|
||||
#SRCS=$(shell echo $(OBJS) | sed "s/\.o/\.c/g")
|
||||
|
||||
@ -129,6 +131,7 @@ $(SRC)/include/zap_skel.h \
|
||||
$(SRC)/include/zap_threadmutex.h \
|
||||
$(SRC)/include/zap_types.h \
|
||||
$(SRC)/include/zap_wanpipe.h \
|
||||
$(SRC)/include/zap_ss7_boost.h \
|
||||
$(SRC)/include/zap_zt.h \
|
||||
$(SRC)/isdn/include/mfifo.h \
|
||||
$(SRC)/isdn/include/national.h \
|
||||
@ -182,6 +185,9 @@ detect_dtmf: $(SRC)/detect_dtmf.c $(MYLIB)
|
||||
testisdn: $(SRC)/testisdn.c $(MYLIB)
|
||||
$(CC) $(INCS) $(ZAP_CFLAGS) -L. $(SRC)/testisdn.c -o testisdn -lopenzap -lm -lpthread
|
||||
|
||||
testboost: $(SRC)/testboost.c $(MYLIB)
|
||||
$(CC) $(INCS) $(ZAP_CFLAGS) -L. $(SRC)/testboost.c -o testboost -lopenzap -lm -lpthread
|
||||
|
||||
testanalog: $(SRC)/testanalog.c $(MYLIB)
|
||||
$(CC) $(INCS) -L. $(SRC)/testanalog.c -o testanalog -lopenzap -lm -lpthread
|
||||
|
||||
@ -218,5 +224,5 @@ mod_openzap-clean:
|
||||
@if [ -f mod_openzap/mod_openzap.so ] ; then cd mod_openzap && make clean ; fi
|
||||
|
||||
clean: mod_openzap-clean
|
||||
rm -f $(SRC)/*.o $(SRC)/isdn/*.o $(MYLIB) *~ \#* testapp testcid testtones detect_tones detect_dtmf priserver testisdn testanalog
|
||||
rm -f $(SRC)/*.o $(SRC)/isdn/*.o $(MYLIB) *~ \#* testapp testcid testtones detect_tones detect_dtmf priserver testisdn testboost testanalog
|
||||
@if [ -f $(LIBPRI)/$(LIBPRIA) ] ; then cd $(LIBPRI) && make clean ; fi
|
||||
|
72
libs/openzap/src/include/zap_ss7_boost.h
Normal file
72
libs/openzap/src/include/zap_ss7_boost.h
Normal file
@ -0,0 +1,72 @@
|
||||
/*
|
||||
* Copyright (c) 2007, Anthony Minessale II
|
||||
* All rights reserved.
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without
|
||||
* modification, are permitted provided that the following conditions
|
||||
* are met:
|
||||
*
|
||||
* * Redistributions of source code must retain the above copyright
|
||||
* notice, this list of conditions and the following disclaimer.
|
||||
*
|
||||
* * Redistributions in binary form must reproduce the above copyright
|
||||
* notice, this list of conditions and the following disclaimer in the
|
||||
* documentation and/or other materials provided with the distribution.
|
||||
*
|
||||
* * Neither the name of the original author; nor the names of any contributors
|
||||
* may be used to endorse or promote products derived from this software
|
||||
* without specific prior written permission.
|
||||
*
|
||||
*
|
||||
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
|
||||
* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
|
||||
* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
|
||||
* A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER
|
||||
* OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
|
||||
* EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
|
||||
* PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
|
||||
* PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
|
||||
* LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
|
||||
* NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
|
||||
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
*/
|
||||
|
||||
#ifndef ZAP_SS7_BOOST_H
|
||||
#define ZAP_SS7_BOOST_H
|
||||
#include "openzap.h"
|
||||
|
||||
typedef enum {
|
||||
ZAP_SS7_BOOST_RUNNING = (1 << 0)
|
||||
} zap_isdn_flag_t;
|
||||
|
||||
struct zap_ss7_boost_data {
|
||||
const char *local_ip;
|
||||
int local_port;
|
||||
const char *remote_ip;
|
||||
int remote_port;
|
||||
zio_signal_cb_t signal_cb;
|
||||
uint32_t flags;
|
||||
};
|
||||
typedef struct zap_ss7_boost_data zap_ss7_boost_data_t;
|
||||
|
||||
zap_status_t zap_ss7_boost_start(zap_span_t *span);
|
||||
zap_status_t zap_ss7_boost_init(void);
|
||||
zap_status_t zap_ss7_boost_configure_span(zap_span_t *span,
|
||||
const char *local_ip, int local_port,
|
||||
const char *remote_ip, int remote_port,
|
||||
zio_signal_cb_t sig_cb);
|
||||
|
||||
|
||||
#endif
|
||||
|
||||
/* For Emacs:
|
||||
* Local Variables:
|
||||
* mode:c
|
||||
* indent-tabs-mode:t
|
||||
* tab-width:4
|
||||
* c-basic-offset:4
|
||||
* End:
|
||||
* For VIM:
|
||||
* vim:set softtabstop=4 shiftwidth=4 tabstop=4 expandtab:
|
||||
*/
|
||||
|
61
libs/openzap/src/testboost.c
Normal file
61
libs/openzap/src/testboost.c
Normal file
@ -0,0 +1,61 @@
|
||||
#include "openzap.h"
|
||||
#include "zap_ss7_boost.h"
|
||||
|
||||
static ZIO_SIGNAL_CB_FUNCTION(on_signal)
|
||||
{
|
||||
return ZAP_FAIL;
|
||||
}
|
||||
|
||||
int main(int argc, char *argv[])
|
||||
{
|
||||
zap_span_t *span;
|
||||
zap_ss7_boost_data_t *data;
|
||||
|
||||
zap_global_set_default_logger(ZAP_LOG_LEVEL_DEBUG);
|
||||
|
||||
if (argc < 2) {
|
||||
printf("umm no\n");
|
||||
exit(-1);
|
||||
}
|
||||
|
||||
if (zap_global_init() != ZAP_SUCCESS) {
|
||||
fprintf(stderr, "Error loading OpenZAP\n");
|
||||
exit(-1);
|
||||
}
|
||||
|
||||
printf("OpenZAP loaded\n");
|
||||
|
||||
if (zap_span_find(atoi(argv[1]), &span) != ZAP_SUCCESS) {
|
||||
fprintf(stderr, "Error finding OpenZAP span\n");
|
||||
goto done;
|
||||
}
|
||||
|
||||
|
||||
if (zap_ss7_boost_configure_span(span, "127.0.0.65", 53000, "127.0.0.66", 53000, on_signal) == ZAP_SUCCESS) {
|
||||
data = span->signal_data;
|
||||
zap_ss7_boost_start(span);
|
||||
} else {
|
||||
fprintf(stderr, "Error starting SS7_BOOST\n");
|
||||
goto done;
|
||||
}
|
||||
|
||||
while(zap_test_flag(data, ZAP_SS7_BOOST_RUNNING)) {
|
||||
zap_sleep(1 * 1000);
|
||||
}
|
||||
|
||||
done:
|
||||
|
||||
zap_global_destroy();
|
||||
|
||||
}
|
||||
|
||||
/* For Emacs:
|
||||
* Local Variables:
|
||||
* mode:c
|
||||
* indent-tabs-mode:t
|
||||
* tab-width:4
|
||||
* c-basic-offset:4
|
||||
* End:
|
||||
* For VIM:
|
||||
* vim:set softtabstop=4 shiftwidth=4 tabstop=4 expandtab:
|
||||
*/
|
114
libs/openzap/src/zap_ss7_boost.c
Normal file
114
libs/openzap/src/zap_ss7_boost.c
Normal file
@ -0,0 +1,114 @@
|
||||
/*
|
||||
* Copyright (c) 2007, Anthony Minessale II
|
||||
* All rights reserved.
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without
|
||||
* modification, are permitted provided that the following conditions
|
||||
* are met:
|
||||
*
|
||||
* * Redistributions of source code must retain the above copyright
|
||||
* notice, this list of conditions and the following disclaimer.
|
||||
*
|
||||
* * Redistributions in binary form must reproduce the above copyright
|
||||
* notice, this list of conditions and the following disclaimer in the
|
||||
* documentation and/or other materials provided with the distribution.
|
||||
*
|
||||
* * Neither the name of the original author; nor the names of any contributors
|
||||
* may be used to endorse or promote products derived from this software
|
||||
* without specific prior written permission.
|
||||
*
|
||||
*
|
||||
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
|
||||
* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
|
||||
* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
|
||||
* A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER
|
||||
* OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
|
||||
* EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
|
||||
* PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
|
||||
* PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
|
||||
* LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
|
||||
* NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
|
||||
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
*/
|
||||
|
||||
#include "openzap.h"
|
||||
#include "ss7_boost_client.h"
|
||||
#include "zap_ss7_boost.h"
|
||||
|
||||
|
||||
static ZIO_CHANNEL_REQUEST_FUNCTION(ss7_boost_channel_request)
|
||||
{
|
||||
zap_status_t status = ZAP_SUCCESS;
|
||||
return status;
|
||||
}
|
||||
|
||||
|
||||
static ZIO_CHANNEL_OUTGOING_CALL_FUNCTION(ss7_boost_outgoing_call)
|
||||
{
|
||||
zap_status_t status = ZAP_SUCCESS;
|
||||
zap_set_state_locked(zchan, ZAP_CHANNEL_STATE_DIALING);
|
||||
return status;
|
||||
}
|
||||
|
||||
static void *zap_ss7_boost_run(zap_thread_t *me, void *obj)
|
||||
{
|
||||
zap_span_t *span = (zap_span_t *) obj;
|
||||
zap_ss7_boost_data_t *ss7_boost_data = span->signal_data;
|
||||
|
||||
while (zap_running() && zap_test_flag(ss7_boost_data, ZAP_SS7_BOOST_RUNNING)) {
|
||||
break;
|
||||
}
|
||||
|
||||
zap_clear_flag(ss7_boost_data, ZAP_SS7_BOOST_RUNNING);
|
||||
|
||||
zap_log(ZAP_LOG_DEBUG, "SS7_BOOST thread ended.\n");
|
||||
return NULL;
|
||||
}
|
||||
|
||||
zap_status_t zap_ss7_boost_init(void)
|
||||
{
|
||||
return ZAP_SUCCESS;
|
||||
}
|
||||
|
||||
zap_status_t zap_ss7_boost_start(zap_span_t *span)
|
||||
{
|
||||
zap_ss7_boost_data_t *ss7_boost_data = span->signal_data;
|
||||
zap_set_flag(ss7_boost_data, ZAP_SS7_BOOST_RUNNING);
|
||||
return zap_thread_create_detached(zap_ss7_boost_run, span);
|
||||
}
|
||||
|
||||
zap_status_t zap_ss7_boost_configure_span(zap_span_t *span,
|
||||
const char *local_ip, int local_port,
|
||||
const char *remote_ip, int remote_port,
|
||||
zio_signal_cb_t sig_cb)
|
||||
{
|
||||
zap_ss7_boost_data_t *ss7_boost_data = NULL;
|
||||
|
||||
ss7_boost_data = malloc(sizeof(*ss7_boost_data));
|
||||
assert(ss7_boost_data);
|
||||
memset(ss7_boost_data, 0, sizeof(*ss7_boost_data));
|
||||
|
||||
ss7_boost_data->local_ip = local_ip;
|
||||
ss7_boost_data->local_port = local_port;
|
||||
ss7_boost_data->remote_ip = remote_ip;
|
||||
ss7_boost_data->remote_port = remote_port;
|
||||
ss7_boost_data->signal_cb = sig_cb;
|
||||
|
||||
span->signal_data = ss7_boost_data;
|
||||
span->signal_type = ZAP_SIGTYPE_SS7BOOST;
|
||||
span->outgoing_call = ss7_boost_outgoing_call;
|
||||
span->channel_request = ss7_boost_channel_request;
|
||||
|
||||
return ZAP_SUCCESS;
|
||||
}
|
||||
|
||||
/* For Emacs:
|
||||
* Local Variables:
|
||||
* mode:c
|
||||
* indent-tabs-mode:t
|
||||
* tab-width:4
|
||||
* c-basic-offset:4
|
||||
* End:
|
||||
* For VIM:
|
||||
* vim:set softtabstop=4 shiftwidth=4 tabstop=4 expandtab:
|
||||
*/
|
Loading…
Reference in New Issue
Block a user