mirror of https://github.com/asterisk/asterisk
git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@43287 65c4cc65-6c06-0410-ace0-fbb531ad65f31.4
parent
44821e39f8
commit
1dfc281c40
@ -0,0 +1,58 @@
|
||||
#
|
||||
# Makefile
|
||||
#
|
||||
# Make file for OpenH323 support layer
|
||||
#
|
||||
|
||||
.PHONY: Makefile.ast clean
|
||||
|
||||
default:: @OPENH323_BUILD@
|
||||
|
||||
# Verify those options with main Makefile
|
||||
STDCCFLAGS = -DNDEBUG
|
||||
STDCCFLAGS += -I../../include -include ../../include/asterisk/autoconfig.h
|
||||
STDCCFLAGS += -fPIC
|
||||
#OPTCCFLAGS +=
|
||||
CFLAGS = -pipe
|
||||
TARGET = libchanh323.a
|
||||
TARGET += Makefile.ast
|
||||
SOURCES = ast_h323.cxx compat_h323.cxx cisco-h225.cxx
|
||||
OBJDIR = .
|
||||
OBJS =
|
||||
|
||||
ifndef OPENH323DIR
|
||||
OPENH323DIR=@OPENH323DIR@
|
||||
endif
|
||||
|
||||
include $(OPENH323DIR)/openh323u.mak
|
||||
|
||||
notrace::
|
||||
$(MAKE) NOTRACE=1 opt
|
||||
|
||||
define module_cxx_template
|
||||
$(1):: $(2)
|
||||
ln -f $(2) $(1)
|
||||
endef
|
||||
|
||||
$(foreach mod,$(SOURCES),$(eval $(call module_cxx_template,$(mod),$(mod:.cxx=.cpp))))
|
||||
#$(SOURCES):: $(SOURCES:.cxx=.cpp)
|
||||
# ln -f $(patsubst %.cxx, %.cpp, $@) $@
|
||||
|
||||
$(SOURCES):: Makefile ../../Makefile
|
||||
touch $@
|
||||
|
||||
libchanh323.a: $(OBJS)
|
||||
ar crv $@ $(OBJS)
|
||||
|
||||
cisco-h225.cpp:: cisco-h225.asn
|
||||
asnparser -m CISCO_H225 -c $<
|
||||
mv -f cisco-h225.cxx cisco-h225.cpp
|
||||
|
||||
Makefile.ast:
|
||||
@echo H323CFLAGS = $(STDCCFLAGS) $(OPTCCFLAGS) $(CFLAGS) >$@.tmp
|
||||
@echo H323LDFLAGS = $(CFLAGS) $(LDFLAGS) >>$@.tmp
|
||||
@echo H323LDLIBS = $(LDLIBS) $(ENDLDLIBS) $(ENDLDFLAGS) >>$@.tmp
|
||||
@if [ -r $@ ] && cmp -s $@ $@.tmp; then rm -f $@.tmp; else mv -f $@.tmp $@; fi
|
||||
|
||||
clean::
|
||||
rm -f $(SOURCES) $(TARGET) $(OBJS) Makefile.ast *.dep
|
@ -0,0 +1,74 @@
|
||||
CISCO-H225-MESSAGES DEFINITIONS AUTOMATIC TAGS ::=
|
||||
BEGIN
|
||||
|
||||
H323_UU_NonStdInfo ::= SEQUENCE
|
||||
{
|
||||
version INTEGER OPTIONAL,
|
||||
protoParam ProtoParam OPTIONAL,
|
||||
commonParam CommonParam OPTIONAL,
|
||||
...,
|
||||
progIndParam ProgIndParam OPTIONAL,
|
||||
dummy1 OCTET STRING OPTIONAL,
|
||||
callMgrParam CallMgrParam OPTIONAL,
|
||||
callSignallingParam CallSignallingParam OPTIONAL,
|
||||
dummy2 OCTET STRING OPTIONAL,
|
||||
callPreserveParam CallPreserveParam OPTIONAL
|
||||
}
|
||||
|
||||
CommonParam ::= SEQUENCE
|
||||
{
|
||||
redirectIEinfo RedirectIEinfo,
|
||||
...
|
||||
}
|
||||
|
||||
RedirectIEinfo ::= SEQUENCE
|
||||
{
|
||||
redirectIE OCTET STRING,
|
||||
...
|
||||
}
|
||||
|
||||
ProgIndParam ::= SEQUENCE
|
||||
{
|
||||
progIndIEinfo ProgIndIEinfo,
|
||||
...
|
||||
}
|
||||
|
||||
ProgIndIEinfo ::= SEQUENCE
|
||||
{
|
||||
progIndIE OCTET STRING,
|
||||
...
|
||||
}
|
||||
|
||||
ProtoParam ::= SEQUENCE
|
||||
{
|
||||
qsigNonStdInfo QsigNonStdInfo,
|
||||
...
|
||||
}
|
||||
|
||||
QsigNonStdInfo ::= SEQUENCE
|
||||
{
|
||||
iei INTEGER,
|
||||
rawMesg OCTET STRING,
|
||||
...
|
||||
}
|
||||
|
||||
CallMgrParam ::= SEQUENCE
|
||||
{
|
||||
interclusterVersion INTEGER,
|
||||
enterpriseID OCTET STRING,
|
||||
...
|
||||
}
|
||||
|
||||
CallPreserveParam ::= SEQUENCE
|
||||
{
|
||||
callPreserveIE BOOLEAN,
|
||||
...
|
||||
}
|
||||
|
||||
CallSignallingParam ::= SEQUENCE
|
||||
{
|
||||
connectedNumber OCTET STRING (1..127) OPTIONAL,
|
||||
...
|
||||
}
|
||||
|
||||
END
|
@ -0,0 +1,853 @@
|
||||
//
|
||||
// cisco-h225.cxx
|
||||
//
|
||||
// Code automatically generated by asnparse.
|
||||
//
|
||||
|
||||
#ifdef P_USE_PRAGMA
|
||||
#pragma implementation "cisco-h225.h"
|
||||
#endif
|
||||
|
||||
#include <ptlib.h>
|
||||
#include "cisco-h225.h"
|
||||
|
||||
#define new PNEW
|
||||
|
||||
|
||||
#if ! H323_DISABLE_CISCO_H225
|
||||
|
||||
//
|
||||
// RedirectIEinfo
|
||||
//
|
||||
|
||||
CISCO_H225_RedirectIEinfo::CISCO_H225_RedirectIEinfo(unsigned tag, PASN_Object::TagClass tagClass)
|
||||
: PASN_Sequence(tag, tagClass, 0, TRUE, 0)
|
||||
{
|
||||
}
|
||||
|
||||
|
||||
#ifndef PASN_NOPRINTON
|
||||
void CISCO_H225_RedirectIEinfo::PrintOn(ostream & strm) const
|
||||
{
|
||||
int indent = strm.precision() + 2;
|
||||
strm << "{\n";
|
||||
strm << setw(indent+13) << "redirectIE = " << setprecision(indent) << m_redirectIE << '\n';
|
||||
strm << setw(indent-1) << setprecision(indent-2) << "}";
|
||||
}
|
||||
#endif
|
||||
|
||||
|
||||
PObject::Comparison CISCO_H225_RedirectIEinfo::Compare(const PObject & obj) const
|
||||
{
|
||||
#ifndef PASN_LEANANDMEAN
|
||||
PAssert(PIsDescendant(&obj, CISCO_H225_RedirectIEinfo), PInvalidCast);
|
||||
#endif
|
||||
const CISCO_H225_RedirectIEinfo & other = (const CISCO_H225_RedirectIEinfo &)obj;
|
||||
|
||||
Comparison result;
|
||||
|
||||
if ((result = m_redirectIE.Compare(other.m_redirectIE)) != EqualTo)
|
||||
return result;
|
||||
|
||||
return PASN_Sequence::Compare(other);
|
||||
}
|
||||
|
||||
|
||||
PINDEX CISCO_H225_RedirectIEinfo::GetDataLength() const
|
||||
{
|
||||
PINDEX length = 0;
|
||||
length += m_redirectIE.GetObjectLength();
|
||||
return length;
|
||||
}
|
||||
|
||||
|
||||
BOOL CISCO_H225_RedirectIEinfo::Decode(PASN_Stream & strm)
|
||||
{
|
||||
if (!PreambleDecode(strm))
|
||||
return FALSE;
|
||||
|
||||
if (!m_redirectIE.Decode(strm))
|
||||
return FALSE;
|
||||
|
||||
return UnknownExtensionsDecode(strm);
|
||||
}
|
||||
|
||||
|
||||
void CISCO_H225_RedirectIEinfo::Encode(PASN_Stream & strm) const
|
||||
{
|
||||
PreambleEncode(strm);
|
||||
|
||||
m_redirectIE.Encode(strm);
|
||||
|
||||
UnknownExtensionsEncode(strm);
|
||||
}
|
||||
|
||||
|
||||
PObject * CISCO_H225_RedirectIEinfo::Clone() const
|
||||
{
|
||||
#ifndef PASN_LEANANDMEAN
|
||||
PAssert(IsClass(CISCO_H225_RedirectIEinfo::Class()), PInvalidCast);
|
||||
#endif
|
||||
return new CISCO_H225_RedirectIEinfo(*this);
|
||||
}
|
||||
|
||||
|
||||
//
|
||||
// ProgIndIEinfo
|
||||
//
|
||||
|
||||
CISCO_H225_ProgIndIEinfo::CISCO_H225_ProgIndIEinfo(unsigned tag, PASN_Object::TagClass tagClass)
|
||||
: PASN_Sequence(tag, tagClass, 0, TRUE, 0)
|
||||
{
|
||||
}
|
||||
|
||||
|
||||
#ifndef PASN_NOPRINTON
|
||||
void CISCO_H225_ProgIndIEinfo::PrintOn(ostream & strm) const
|
||||
{
|
||||
int indent = strm.precision() + 2;
|
||||
strm << "{\n";
|
||||
strm << setw(indent+12) << "progIndIE = " << setprecision(indent) << m_progIndIE << '\n';
|
||||
strm << setw(indent-1) << setprecision(indent-2) << "}";
|
||||
}
|
||||
#endif
|
||||
|
||||
|
||||
PObject::Comparison CISCO_H225_ProgIndIEinfo::Compare(const PObject & obj) const
|
||||
{
|
||||
#ifndef PASN_LEANANDMEAN
|
||||
PAssert(PIsDescendant(&obj, CISCO_H225_ProgIndIEinfo), PInvalidCast);
|
||||
#endif
|
||||
const CISCO_H225_ProgIndIEinfo & other = (const CISCO_H225_ProgIndIEinfo &)obj;
|
||||
|
||||
Comparison result;
|
||||
|
||||
if ((result = m_progIndIE.Compare(other.m_progIndIE)) != EqualTo)
|
||||
return result;
|
||||
|
||||
return PASN_Sequence::Compare(other);
|
||||
}
|
||||
|
||||
|
||||
PINDEX CISCO_H225_ProgIndIEinfo::GetDataLength() const
|
||||
{
|
||||
PINDEX length = 0;
|
||||
length += m_progIndIE.GetObjectLength();
|
||||
return length;
|
||||
}
|
||||
|
||||
|
||||
BOOL CISCO_H225_ProgIndIEinfo::Decode(PASN_Stream & strm)
|
||||
{
|
||||
if (!PreambleDecode(strm))
|
||||
return FALSE;
|
||||
|
||||
if (!m_progIndIE.Decode(strm))
|
||||
return FALSE;
|
||||
|
||||
return UnknownExtensionsDecode(strm);
|
||||
}
|
||||
|
||||
|
||||
void CISCO_H225_ProgIndIEinfo::Encode(PASN_Stream & strm) const
|
||||
{
|
||||
PreambleEncode(strm);
|
||||
|
||||
m_progIndIE.Encode(strm);
|
||||
|
||||
UnknownExtensionsEncode(strm);
|
||||
}
|
||||
|
||||
|
||||
PObject * CISCO_H225_ProgIndIEinfo::Clone() const
|
||||
{
|
||||
#ifndef PASN_LEANANDMEAN
|
||||
PAssert(IsClass(CISCO_H225_ProgIndIEinfo::Class()), PInvalidCast);
|
||||
#endif
|
||||
return new CISCO_H225_ProgIndIEinfo(*this);
|
||||
}
|
||||
|
||||
|
||||
//
|
||||
// QsigNonStdInfo
|
||||
//
|
||||
|
||||
CISCO_H225_QsigNonStdInfo::CISCO_H225_QsigNonStdInfo(unsigned tag, PASN_Object::TagClass tagClass)
|
||||
: PASN_Sequence(tag, tagClass, 0, TRUE, 0)
|
||||
{
|
||||
}
|
||||
|
||||
|
||||
#ifndef PASN_NOPRINTON
|
||||
void CISCO_H225_QsigNonStdInfo::PrintOn(ostream & strm) const
|
||||
{
|
||||
int indent = strm.precision() + 2;
|
||||
strm << "{\n";
|
||||
strm << setw(indent+6) << "iei = " << setprecision(indent) << m_iei << '\n';
|
||||
strm << setw(indent+10) << "rawMesg = " << setprecision(indent) << m_rawMesg << '\n';
|
||||
strm << setw(indent-1) << setprecision(indent-2) << "}";
|
||||
}
|
||||
#endif
|
||||
|
||||
|
||||
PObject::Comparison CISCO_H225_QsigNonStdInfo::Compare(const PObject & obj) const
|
||||
{
|
||||
#ifndef PASN_LEANANDMEAN
|
||||
PAssert(PIsDescendant(&obj, CISCO_H225_QsigNonStdInfo), PInvalidCast);
|
||||
#endif
|
||||
const CISCO_H225_QsigNonStdInfo & other = (const CISCO_H225_QsigNonStdInfo &)obj;
|
||||
|
||||
Comparison result;
|
||||
|
||||
if ((result = m_iei.Compare(other.m_iei)) != EqualTo)
|
||||
return result;
|
||||
if ((result = m_rawMesg.Compare(other.m_rawMesg)) != EqualTo)
|
||||
return result;
|
||||
|
||||
return PASN_Sequence::Compare(other);
|
||||
}
|
||||
|
||||
|
||||
PINDEX CISCO_H225_QsigNonStdInfo::GetDataLength() const
|
||||
{
|
||||
PINDEX length = 0;
|
||||
length += m_iei.GetObjectLength();
|
||||
length += m_rawMesg.GetObjectLength();
|
||||
return length;
|
||||
}
|
||||
|
||||
|
||||
BOOL CISCO_H225_QsigNonStdInfo::Decode(PASN_Stream & strm)
|
||||
{
|
||||
if (!PreambleDecode(strm))
|
||||
return FALSE;
|
||||
|
||||
if (!m_iei.Decode(strm))
|
||||
return FALSE;
|
||||
if (!m_rawMesg.Decode(strm))
|
||||
return FALSE;
|
||||
|
||||
return UnknownExtensionsDecode(strm);
|
||||
}
|
||||
|
||||
|
||||
void CISCO_H225_QsigNonStdInfo::Encode(PASN_Stream & strm) const
|
||||
{
|
||||
PreambleEncode(strm);
|
||||
|
||||
m_iei.Encode(strm);
|
||||
m_rawMesg.Encode(strm);
|
||||
|
||||
UnknownExtensionsEncode(strm);
|
||||
}
|
||||
|
||||
|
||||
PObject * CISCO_H225_QsigNonStdInfo::Clone() const
|
||||
{
|
||||
#ifndef PASN_LEANANDMEAN
|
||||
PAssert(IsClass(CISCO_H225_QsigNonStdInfo::Class()), PInvalidCast);
|
||||
#endif
|
||||
return new CISCO_H225_QsigNonStdInfo(*this);
|
||||
}
|
||||
|
||||
|
||||
//
|
||||
// CallMgrParam
|
||||
//
|
||||
|
||||
CISCO_H225_CallMgrParam::CISCO_H225_CallMgrParam(unsigned tag, PASN_Object::TagClass tagClass)
|
||||
: PASN_Sequence(tag, tagClass, 0, TRUE, 0)
|
||||
{
|
||||
}
|
||||
|
||||
|
||||
#ifndef PASN_NOPRINTON
|
||||
void CISCO_H225_CallMgrParam::PrintOn(ostream & strm) const
|
||||
{
|
||||
int indent = strm.precision() + 2;
|
||||
strm << "{\n";
|
||||
strm << setw(indent+22) << "interclusterVersion = " << setprecision(indent) << m_interclusterVersion << '\n';
|
||||
strm << setw(indent+15) << "enterpriseID = " << setprecision(indent) << m_enterpriseID << '\n';
|
||||
strm << setw(indent-1) << setprecision(indent-2) << "}";
|
||||
}
|
||||
#endif
|
||||
|
||||
|
||||
PObject::Comparison CISCO_H225_CallMgrParam::Compare(const PObject & obj) const
|
||||
{
|
||||
#ifndef PASN_LEANANDMEAN
|
||||
PAssert(PIsDescendant(&obj, CISCO_H225_CallMgrParam), PInvalidCast);
|
||||
#endif
|
||||
const CISCO_H225_CallMgrParam & other = (const CISCO_H225_CallMgrParam &)obj;
|
||||
|
||||
Comparison result;
|
||||
|
||||
if ((result = m_interclusterVersion.Compare(other.m_interclusterVersion)) != EqualTo)
|
||||
return result;
|
||||
if ((result = m_enterpriseID.Compare(other.m_enterpriseID)) != EqualTo)
|
||||
return result;
|
||||
|
||||
return PASN_Sequence::Compare(other);
|
||||
}
|
||||
|
||||
|
||||
PINDEX CISCO_H225_CallMgrParam::GetDataLength() const
|
||||
{
|
||||
PINDEX length = 0;
|
||||
length += m_interclusterVersion.GetObjectLength();
|
||||
length += m_enterpriseID.GetObjectLength();
|
||||
return length;
|
||||
}
|
||||
|
||||
|
||||
BOOL CISCO_H225_CallMgrParam::Decode(PASN_Stream & strm)
|
||||
{
|
||||
if (!PreambleDecode(strm))
|
||||
return FALSE;
|
||||
|
||||
if (!m_interclusterVersion.Decode(strm))
|
||||
return FALSE;
|
||||
if (!m_enterpriseID.Decode(strm))
|
||||
return FALSE;
|
||||
|
||||
return UnknownExtensionsDecode(strm);
|
||||
}
|
||||
|
||||
|
||||
void CISCO_H225_CallMgrParam::Encode(PASN_Stream & strm) const
|
||||
{
|
||||
PreambleEncode(strm);
|
||||
|
||||
m_interclusterVersion.Encode(strm);
|
||||
m_enterpriseID.Encode(strm);
|
||||
|
||||
UnknownExtensionsEncode(strm);
|
||||
}
|
||||
|
||||
|
||||
PObject * CISCO_H225_CallMgrParam::Clone() const
|
||||
{
|
||||
#ifndef PASN_LEANANDMEAN
|
||||
PAssert(IsClass(CISCO_H225_CallMgrParam::Class()), PInvalidCast);
|
||||
#endif
|
||||
return new CISCO_H225_CallMgrParam(*this);
|
||||
}
|
||||
|
||||
|
||||
//
|
||||
// CallPreserveParam
|
||||
//
|
||||
|
||||
CISCO_H225_CallPreserveParam::CISCO_H225_CallPreserveParam(unsigned tag, PASN_Object::TagClass tagClass)
|
||||
: PASN_Sequence(tag, tagClass, 0, TRUE, 0)
|
||||
{
|
||||
}
|
||||
|
||||
|
||||
#ifndef PASN_NOPRINTON
|
||||
void CISCO_H225_CallPreserveParam::PrintOn(ostream & strm) const
|
||||
{
|
||||
int indent = strm.precision() + 2;
|
||||
strm << "{\n";
|
||||
strm << setw(indent+17) << "callPreserveIE = " << setprecision(indent) << m_callPreserveIE << '\n';
|
||||
strm << setw(indent-1) << setprecision(indent-2) << "}";
|
||||
}
|
||||
#endif
|
||||
|
||||
|
||||
PObject::Comparison CISCO_H225_CallPreserveParam::Compare(const PObject & obj) const
|
||||
{
|
||||
#ifndef PASN_LEANANDMEAN
|
||||
PAssert(PIsDescendant(&obj, CISCO_H225_CallPreserveParam), PInvalidCast);
|
||||
#endif
|
||||
const CISCO_H225_CallPreserveParam & other = (const CISCO_H225_CallPreserveParam &)obj;
|
||||
|
||||
Comparison result;
|
||||
|
||||
if ((result = m_callPreserveIE.Compare(other.m_callPreserveIE)) != EqualTo)
|
||||
return result;
|
||||
|
||||
return PASN_Sequence::Compare(other);
|
||||
}
|
||||
|
||||
|
||||
PINDEX CISCO_H225_CallPreserveParam::GetDataLength() const
|
||||
{
|
||||
PINDEX length = 0;
|
||||
length += m_callPreserveIE.GetObjectLength();
|
||||
return length;
|
||||
}
|
||||
|
||||
|
||||
BOOL CISCO_H225_CallPreserveParam::Decode(PASN_Stream & strm)
|
||||
{
|
||||
if (!PreambleDecode(strm))
|
||||
return FALSE;
|
||||
|
||||
if (!m_callPreserveIE.Decode(strm))
|
||||
return FALSE;
|
||||
|
||||
return UnknownExtensionsDecode(strm);
|
||||
}
|
||||
|
||||
|
||||
void CISCO_H225_CallPreserveParam::Encode(PASN_Stream & strm) const
|
||||
{
|
||||
PreambleEncode(strm);
|
||||
|
||||
m_callPreserveIE.Encode(strm);
|
||||
|
||||
UnknownExtensionsEncode(strm);
|
||||
}
|
||||
|
||||
|
||||
PObject * CISCO_H225_CallPreserveParam::Clone() const
|
||||
{
|
||||
#ifndef PASN_LEANANDMEAN
|
||||
PAssert(IsClass(CISCO_H225_CallPreserveParam::Class()), PInvalidCast);
|
||||
#endif
|
||||
return new CISCO_H225_CallPreserveParam(*this);
|
||||
}
|
||||
|
||||
|
||||
//
|
||||
// CallSignallingParam
|
||||
//
|
||||
|
||||
CISCO_H225_CallSignallingParam::CISCO_H225_CallSignallingParam(unsigned tag, PASN_Object::TagClass tagClass)
|
||||
: PASN_Sequence(tag, tagClass, 1, TRUE, 0)
|
||||
{
|
||||
m_connectedNumber.SetConstraints(PASN_Object::FixedConstraint, 1, 127);
|
||||
}
|
||||
|
||||
|
||||
#ifndef PASN_NOPRINTON
|
||||
void CISCO_H225_CallSignallingParam::PrintOn(ostream & strm) const
|
||||
{
|
||||
int indent = strm.precision() + 2;
|
||||
strm << "{\n";
|
||||
if (HasOptionalField(e_connectedNumber))
|
||||
strm << setw(indent+18) << "connectedNumber = " << setprecision(indent) << m_connectedNumber << '\n';
|
||||
strm << setw(indent-1) << setprecision(indent-2) << "}";
|
||||
}
|
||||
#endif
|
||||
|
||||
|
||||
PObject::Comparison CISCO_H225_CallSignallingParam::Compare(const PObject & obj) const
|
||||
{
|
||||
#ifndef PASN_LEANANDMEAN
|
||||
PAssert(PIsDescendant(&obj, CISCO_H225_CallSignallingParam), PInvalidCast);
|
||||
#endif
|
||||
const CISCO_H225_CallSignallingParam & other = (const CISCO_H225_CallSignallingParam &)obj;
|
||||
|
||||
Comparison result;
|
||||
|
||||
if ((result = m_connectedNumber.Compare(other.m_connectedNumber)) != EqualTo)
|
||||
return result;
|
||||
|
||||
return PASN_Sequence::Compare(other);
|
||||
}
|
||||
|
||||
|
||||
PINDEX CISCO_H225_CallSignallingParam::GetDataLength() const
|
||||
{
|
||||
PINDEX length = 0;
|
||||
if (HasOptionalField(e_connectedNumber))
|
||||
length += m_connectedNumber.GetObjectLength();
|
||||
return length;
|
||||
}
|
||||
|
||||
|
||||
BOOL CISCO_H225_CallSignallingParam::Decode(PASN_Stream & strm)
|
||||
{
|
||||
if (!PreambleDecode(strm))
|
||||
return FALSE;
|
||||
|
||||
if (HasOptionalField(e_connectedNumber) && !m_connectedNumber.Decode(strm))
|
||||
return FALSE;
|
||||
|
||||
return UnknownExtensionsDecode(strm);
|
||||
}
|
||||
|
||||
|
||||
void CISCO_H225_CallSignallingParam::Encode(PASN_Stream & strm) const
|
||||
{
|
||||
PreambleEncode(strm);
|
||||
|
||||
if (HasOptionalField(e_connectedNumber))
|
||||
m_connectedNumber.Encode(strm);
|
||||
|
||||
UnknownExtensionsEncode(strm);
|
||||
}
|
||||
|
||||
|
||||
PObject * CISCO_H225_CallSignallingParam::Clone() const
|
||||
{
|
||||
#ifndef PASN_LEANANDMEAN
|
||||
PAssert(IsClass(CISCO_H225_CallSignallingParam::Class()), PInvalidCast);
|
||||
#endif
|
||||
return new CISCO_H225_CallSignallingParam(*this);
|
||||
}
|
||||
|
||||
|
||||
//
|
||||
// CommonParam
|
||||
//
|
||||
|
||||
CISCO_H225_CommonParam::CISCO_H225_CommonParam(unsigned tag, PASN_Object::TagClass tagClass)
|
||||
: PASN_Sequence(tag, tagClass, 0, TRUE, 0)
|
||||
{
|
||||
}
|
||||
|
||||
|
||||
#ifndef PASN_NOPRINTON
|
||||
void CISCO_H225_CommonParam::PrintOn(ostream & strm) const
|
||||
{
|
||||
int indent = strm.precision() + 2;
|
||||
strm << "{\n";
|
||||
strm << setw(indent+17) << "redirectIEinfo = " << setprecision(indent) << m_redirectIEinfo << '\n';
|
||||
strm << setw(indent-1) << setprecision(indent-2) << "}";
|
||||
}
|
||||
#endif
|
||||
|
||||
|
||||
PObject::Comparison CISCO_H225_CommonParam::Compare(const PObject & obj) const
|
||||
{
|
||||
#ifndef PASN_LEANANDMEAN
|
||||
PAssert(PIsDescendant(&obj, CISCO_H225_CommonParam), PInvalidCast);
|
||||
#endif
|
||||
const CISCO_H225_CommonParam & other = (const CISCO_H225_CommonParam &)obj;
|
||||
|
||||
Comparison result;
|
||||
|
||||
if ((result = m_redirectIEinfo.Compare(other.m_redirectIEinfo)) != EqualTo)
|
||||
return result;
|
||||
|
||||
return PASN_Sequence::Compare(other);
|
||||
}
|
||||
|
||||
|
||||
PINDEX CISCO_H225_CommonParam::GetDataLength() const
|
||||
{
|
||||
PINDEX length = 0;
|
||||
length += m_redirectIEinfo.GetObjectLength();
|
||||
return length;
|
||||
}
|
||||
|
||||
|
||||
BOOL CISCO_H225_CommonParam::Decode(PASN_Stream & strm)
|
||||
{
|
||||
if (!PreambleDecode(strm))
|
||||
return FALSE;
|
||||
|
||||
if (!m_redirectIEinfo.Decode(strm))
|
||||
return FALSE;
|
||||
|
||||
return UnknownExtensionsDecode(strm);
|
||||
}
|
||||
|
||||
|
||||
void CISCO_H225_CommonParam::Encode(PASN_Stream & strm) const
|
||||
{
|
||||
PreambleEncode(strm);
|
||||
|
||||
m_redirectIEinfo.Encode(strm);
|
||||
|
||||
UnknownExtensionsEncode(strm);
|
||||
}
|
||||
|
||||
|
||||
PObject * CISCO_H225_CommonParam::Clone() const
|
||||
{
|
||||
#ifndef PASN_LEANANDMEAN
|
||||
PAssert(IsClass(CISCO_H225_CommonParam::Class()), PInvalidCast);
|
||||
#endif
|
||||
return new CISCO_H225_CommonParam(*this);
|
||||
}
|
||||
|
||||
|
||||
//
|
||||
// ProgIndParam
|
||||
//
|
||||
|
||||
CISCO_H225_ProgIndParam::CISCO_H225_ProgIndParam(unsigned tag, PASN_Object::TagClass tagClass)
|
||||
: PASN_Sequence(tag, tagClass, 0, TRUE, 0)
|
||||
{
|
||||
}
|
||||
|
||||
|
||||
#ifndef PASN_NOPRINTON
|
||||
void CISCO_H225_ProgIndParam::PrintOn(ostream & strm) const
|
||||
{
|
||||
int indent = strm.precision() + 2;
|
||||
strm << "{\n";
|
||||
strm << setw(indent+16) << "progIndIEinfo = " << setprecision(indent) << m_progIndIEinfo << '\n';
|
||||
strm << setw(indent-1) << setprecision(indent-2) << "}";
|
||||
}
|
||||
#endif
|
||||
|
||||
|
||||
PObject::Comparison CISCO_H225_ProgIndParam::Compare(const PObject & obj) const
|
||||
{
|
||||
#ifndef PASN_LEANANDMEAN
|
||||
PAssert(PIsDescendant(&obj, CISCO_H225_ProgIndParam), PInvalidCast);
|
||||
#endif
|
||||
const CISCO_H225_ProgIndParam & other = (const CISCO_H225_ProgIndParam &)obj;
|
||||
|
||||
Comparison result;
|
||||
|
||||
if ((result = m_progIndIEinfo.Compare(other.m_progIndIEinfo)) != EqualTo)
|
||||
return result;
|
||||
|
||||
return PASN_Sequence::Compare(other);
|
||||
}
|
||||
|
||||
|
||||
PINDEX CISCO_H225_ProgIndParam::GetDataLength() const
|
||||
{
|
||||
PINDEX length = 0;
|
||||
length += m_progIndIEinfo.GetObjectLength();
|
||||
return length;
|
||||
}
|
||||
|
||||
|
||||
BOOL CISCO_H225_ProgIndParam::Decode(PASN_Stream & strm)
|
||||
{
|
||||
if (!PreambleDecode(strm))
|
||||
return FALSE;
|
||||
|
||||
if (!m_progIndIEinfo.Decode(strm))
|
||||
return FALSE;
|
||||
|
||||
return UnknownExtensionsDecode(strm);
|
||||
}
|
||||
|
||||
|
||||
void CISCO_H225_ProgIndParam::Encode(PASN_Stream & strm) const
|
||||
{
|
||||
PreambleEncode(strm);
|
||||
|
||||
m_progIndIEinfo.Encode(strm);
|
||||
|
||||
UnknownExtensionsEncode(strm);
|
||||
}
|
||||
|
||||
|
||||
PObject * CISCO_H225_ProgIndParam::Clone() const
|
||||
{
|
||||
#ifndef PASN_LEANANDMEAN
|
||||
PAssert(IsClass(CISCO_H225_ProgIndParam::Class()), PInvalidCast);
|
||||
#endif
|
||||
return new CISCO_H225_ProgIndParam(*this);
|
||||
}
|
||||
|
||||
|
||||
//
|
||||
// ProtoParam
|
||||
//
|
||||
|
||||
CISCO_H225_ProtoParam::CISCO_H225_ProtoParam(unsigned tag, PASN_Object::TagClass tagClass)
|
||||
: PASN_Sequence(tag, tagClass, 0, TRUE, 0)
|
||||
{
|
||||
}
|
||||
|
||||
|
||||
#ifndef PASN_NOPRINTON
|
||||
void CISCO_H225_ProtoParam::PrintOn(ostream & strm) const
|
||||
{
|
||||
int indent = strm.precision() + 2;
|
||||
strm << "{\n";
|
||||
strm << setw(indent+17) << "qsigNonStdInfo = " << setprecision(indent) << m_qsigNonStdInfo << '\n';
|
||||
strm << setw(indent-1) << setprecision(indent-2) << "}";
|
||||
}
|
||||
#endif
|
||||
|
||||
|
||||
PObject::Comparison CISCO_H225_ProtoParam::Compare(const PObject & obj) const
|
||||
{
|
||||
#ifndef PASN_LEANANDMEAN
|
||||
PAssert(PIsDescendant(&obj, CISCO_H225_ProtoParam), PInvalidCast);
|
||||
#endif
|
||||
const CISCO_H225_ProtoParam & other = (const CISCO_H225_ProtoParam &)obj;
|
||||
|
||||
Comparison result;
|
||||
|
||||
if ((result = m_qsigNonStdInfo.Compare(other.m_qsigNonStdInfo)) != EqualTo)
|
||||
return result;
|
||||
|
||||
return PASN_Sequence::Compare(other);
|
||||
}
|
||||
|
||||
|
||||
PINDEX CISCO_H225_ProtoParam::GetDataLength() const
|
||||
{
|
||||
PINDEX length = 0;
|
||||
length += m_qsigNonStdInfo.GetObjectLength();
|
||||
return length;
|
||||
}
|
||||
|
||||
|
||||
BOOL CISCO_H225_ProtoParam::Decode(PASN_Stream & strm)
|
||||
{
|
||||
if (!PreambleDecode(strm))
|
||||
return FALSE;
|
||||
|
||||
if (!m_qsigNonStdInfo.Decode(strm))
|
||||
return FALSE;
|
||||
|
||||
return UnknownExtensionsDecode(strm);
|
||||
}
|
||||
|
||||
|
||||
void CISCO_H225_ProtoParam::Encode(PASN_Stream & strm) const
|
||||
{
|
||||
PreambleEncode(strm);
|
||||
|
||||
m_qsigNonStdInfo.Encode(strm);
|
||||
|
||||
UnknownExtensionsEncode(strm);
|
||||
}
|
||||
|
||||
|
||||
PObject * CISCO_H225_ProtoParam::Clone() const
|
||||
{
|
||||
#ifndef PASN_LEANANDMEAN
|
||||
PAssert(IsClass(CISCO_H225_ProtoParam::Class()), PInvalidCast);
|
||||
#endif
|
||||
return new CISCO_H225_ProtoParam(*this);
|
||||
}
|
||||
|
||||
|
||||
//
|
||||
// H323_UU_NonStdInfo
|
||||
//
|
||||
|
||||
CISCO_H225_H323_UU_NonStdInfo::CISCO_H225_H323_UU_NonStdInfo(unsigned tag, PASN_Object::TagClass tagClass)
|
||||
: PASN_Sequence(tag, tagClass, 3, TRUE, 6)
|
||||
{
|
||||
}
|
||||
|
||||
|
||||
#ifndef PASN_NOPRINTON
|
||||
void CISCO_H225_H323_UU_NonStdInfo::PrintOn(ostream & strm) const
|
||||
{
|
||||
int indent = strm.precision() + 2;
|
||||
strm << "{\n";
|
||||
if (HasOptionalField(e_version))
|
||||
strm << setw(indent+10) << "version = " << setprecision(indent) << m_version << '\n';
|
||||
if (HasOptionalField(e_protoParam))
|
||||
strm << setw(indent+13) << "protoParam = " << setprecision(indent) << m_protoParam << '\n';
|
||||
if (HasOptionalField(e_commonParam))
|
||||
strm << setw(indent+14) << "commonParam = " << setprecision(indent) << m_commonParam << '\n';
|
||||
if (HasOptionalField(e_progIndParam))
|
||||
strm << setw(indent+15) << "progIndParam = " << setprecision(indent) << m_progIndParam << '\n';
|
||||
if (HasOptionalField(e_dummy1))
|
||||
strm << setw(indent+9) << "dummy1 = " << setprecision(indent) << m_dummy1 << '\n';
|
||||
if (HasOptionalField(e_callMgrParam))
|
||||
strm << setw(indent+15) << "callMgrParam = " << setprecision(indent) << m_callMgrParam << '\n';
|
||||
if (HasOptionalField(e_callSignallingParam))
|
||||
strm << setw(indent+22) << "callSignallingParam = " << setprecision(indent) << m_callSignallingParam << '\n';
|
||||
if (HasOptionalField(e_dummy2))
|
||||
strm << setw(indent+9) << "dummy2 = " << setprecision(indent) << m_dummy2 << '\n';
|
||||
if (HasOptionalField(e_callPreserveParam))
|
||||
strm << setw(indent+20) << "callPreserveParam = " << setprecision(indent) << m_callPreserveParam << '\n';
|
||||
strm << setw(indent-1) << setprecision(indent-2) << "}";
|
||||
}
|
||||
#endif
|
||||
|
||||
|
||||
PObject::Comparison CISCO_H225_H323_UU_NonStdInfo::Compare(const PObject & obj) const
|
||||
{
|
||||
#ifndef PASN_LEANANDMEAN
|
||||
PAssert(PIsDescendant(&obj, CISCO_H225_H323_UU_NonStdInfo), PInvalidCast);
|
||||
#endif
|
||||
const CISCO_H225_H323_UU_NonStdInfo & other = (const CISCO_H225_H323_UU_NonStdInfo &)obj;
|
||||
|
||||
Comparison result;
|
||||
|
||||
if ((result = m_version.Compare(other.m_version)) != EqualTo)
|
||||
return result;
|
||||
if ((result = m_protoParam.Compare(other.m_protoParam)) != EqualTo)
|
||||
return result;
|
||||
if ((result = m_commonParam.Compare(other.m_commonParam)) != EqualTo)
|
||||
return result;
|
||||
|
||||
return PASN_Sequence::Compare(other);
|
||||
}
|
||||
|
||||
|
||||
PINDEX CISCO_H225_H323_UU_NonStdInfo::GetDataLength() const
|
||||
{
|
||||
PINDEX length = 0;
|
||||
if (HasOptionalField(e_version))
|
||||
length += m_version.GetObjectLength();
|
||||
if (HasOptionalField(e_protoParam))
|
||||
length += m_protoParam.GetObjectLength();
|
||||
if (HasOptionalField(e_commonParam))
|
||||
length += m_commonParam.GetObjectLength();
|
||||
return length;
|
||||
}
|
||||
|
||||
|
||||
BOOL CISCO_H225_H323_UU_NonStdInfo::Decode(PASN_Stream & strm)
|
||||
{
|
||||
if (!PreambleDecode(strm))
|
||||
return FALSE;
|
||||
|
||||
if (HasOptionalField(e_version) && !m_version.Decode(strm))
|
||||
return FALSE;
|
||||
if (HasOptionalField(e_protoParam) && !m_protoParam.Decode(strm))
|
||||
return FALSE;
|
||||
if (HasOptionalField(e_commonParam) && !m_commonParam.Decode(strm))
|
||||
return FALSE;
|
||||
if (!KnownExtensionDecode(strm, e_progIndParam, m_progIndParam))
|
||||
return FALSE;
|
||||
if (!KnownExtensionDecode(strm, e_dummy1, m_dummy1))
|
||||
return FALSE;
|
||||
if (!KnownExtensionDecode(strm, e_callMgrParam, m_callMgrParam))
|
||||
return FALSE;
|
||||
if (!KnownExtensionDecode(strm, e_callSignallingParam, m_callSignallingParam))
|
||||
return FALSE;
|
||||
if (!KnownExtensionDecode(strm, e_dummy2, m_dummy2))
|
||||
return FALSE;
|
||||
if (!KnownExtensionDecode(strm, e_callPreserveParam, m_callPreserveParam))
|
||||
return FALSE;
|
||||
|
||||
return UnknownExtensionsDecode(strm);
|
||||
}
|
||||
|
||||
|
||||
void CISCO_H225_H323_UU_NonStdInfo::Encode(PASN_Stream & strm) const
|
||||
{
|
||||
PreambleEncode(strm);
|
||||
|
||||
if (HasOptionalField(e_version))
|
||||
m_version.Encode(strm);
|
||||
if (HasOptionalField(e_protoParam))
|
||||
m_protoParam.Encode(strm);
|
||||
if (HasOptionalField(e_commonParam))
|
||||
m_commonParam.Encode(strm);
|
||||
KnownExtensionEncode(strm, e_progIndParam, m_progIndParam);
|
||||
KnownExtensionEncode(strm, e_dummy1, m_dummy1);
|
||||
KnownExtensionEncode(strm, e_callMgrParam, m_callMgrParam);
|
||||
KnownExtensionEncode(strm, e_callSignallingParam, m_callSignallingParam);
|
||||
KnownExtensionEncode(strm, e_dummy2, m_dummy2);
|
||||
KnownExtensionEncode(strm, e_callPreserveParam, m_callPreserveParam);
|
||||
|
||||
UnknownExtensionsEncode(strm);
|
||||
}
|
||||
|
||||
|
||||
PObject * CISCO_H225_H323_UU_NonStdInfo::Clone() const
|
||||
{
|
||||
#ifndef PASN_LEANANDMEAN
|
||||
PAssert(IsClass(CISCO_H225_H323_UU_NonStdInfo::Class()), PInvalidCast);
|
||||
#endif
|
||||
return new CISCO_H225_H323_UU_NonStdInfo(*this);
|
||||
}
|
||||
|
||||
|
||||
#endif // if ! H323_DISABLE_CISCO_H225
|
||||
|
||||
|
||||
// End of cisco-h225.cxx
|
@ -0,0 +1,299 @@
|
||||
//
|
||||
// cisco-h225.h
|
||||
//
|
||||
// Code automatically generated by asnparse.
|
||||
//
|
||||
|
||||
#if ! H323_DISABLE_CISCO_H225
|
||||
|
||||
#ifndef __CISCO_H225_H
|
||||
#define __CISCO_H225_H
|
||||
|
||||
#ifdef P_USE_PRAGMA
|
||||
#pragma interface
|
||||
#endif
|
||||
|
||||
#include <ptclib/asner.h>
|
||||
|
||||
//
|
||||
// RedirectIEinfo
|
||||
//
|
||||
|
||||
class CISCO_H225_RedirectIEinfo : public PASN_Sequence
|
||||
{
|
||||
#ifndef PASN_LEANANDMEAN
|
||||
PCLASSINFO(CISCO_H225_RedirectIEinfo, PASN_Sequence);
|
||||
#endif
|
||||
public:
|
||||
CISCO_H225_RedirectIEinfo(unsigned tag = UniversalSequence, TagClass tagClass = UniversalTagClass);
|
||||
|
||||
PASN_OctetString m_redirectIE;
|
||||
|
||||
PINDEX GetDataLength() const;
|
||||
BOOL Decode(PASN_Stream & strm);
|
||||
void Encode(PASN_Stream & strm) const;
|
||||
#ifndef PASN_NOPRINTON
|
||||
void PrintOn(ostream & strm) const;
|
||||
#endif
|
||||
Comparison Compare(const PObject & obj) const;
|
||||
PObject * Clone() const;
|
||||
};
|
||||
|
||||
|
||||
//
|
||||
// ProgIndIEinfo
|
||||
//
|
||||
|
||||
class CISCO_H225_ProgIndIEinfo : public PASN_Sequence
|
||||
{
|
||||
#ifndef PASN_LEANANDMEAN
|
||||
PCLASSINFO(CISCO_H225_ProgIndIEinfo, PASN_Sequence);
|
||||
#endif
|
||||
public:
|
||||
CISCO_H225_ProgIndIEinfo(unsigned tag = UniversalSequence, TagClass tagClass = UniversalTagClass);
|
||||
|
||||
PASN_OctetString m_progIndIE;
|
||||
|
||||
PINDEX GetDataLength() const;
|
||||
BOOL Decode(PASN_Stream & strm);
|
||||
void Encode(PASN_Stream & strm) const;
|
||||
#ifndef PASN_NOPRINTON
|
||||
void PrintOn(ostream & strm) const;
|
||||
#endif
|
||||
Comparison Compare(const PObject & obj) const;
|
||||
PObject * Clone() const;
|
||||
};
|
||||
|
||||
|
||||
//
|
||||
// QsigNonStdInfo
|
||||
//
|
||||
|
||||
class CISCO_H225_QsigNonStdInfo : public PASN_Sequence
|
||||
{
|
||||
#ifndef PASN_LEANANDMEAN
|
||||
PCLASSINFO(CISCO_H225_QsigNonStdInfo, PASN_Sequence);
|
||||
#endif
|
||||
public:
|
||||
CISCO_H225_QsigNonStdInfo(unsigned tag = UniversalSequence, TagClass tagClass = UniversalTagClass);
|
||||
|
||||
PASN_Integer m_iei;
|
||||
PASN_OctetString m_rawMesg;
|
||||
|
||||
PINDEX GetDataLength() const;
|
||||
BOOL Decode(PASN_Stream & strm);
|
||||
void Encode(PASN_Stream & strm) const;
|
||||
#ifndef PASN_NOPRINTON
|
||||
void PrintOn(ostream & strm) const;
|
||||
#endif
|
||||
Comparison Compare(const PObject & obj) const;
|
||||
PObject * Clone() const;
|
||||
};
|
||||
|
||||
|
||||
//
|
||||
// CallMgrParam
|
||||
//
|
||||
|
||||
class CISCO_H225_CallMgrParam : public PASN_Sequence
|
||||
{
|
||||
#ifndef PASN_LEANANDMEAN
|
||||
PCLASSINFO(CISCO_H225_CallMgrParam, PASN_Sequence);
|
||||
#endif
|
||||
public:
|
||||
CISCO_H225_CallMgrParam(unsigned tag = UniversalSequence, TagClass tagClass = UniversalTagClass);
|
||||
|
||||
PASN_Integer m_interclusterVersion;
|
||||
PASN_OctetString m_enterpriseID;
|
||||
|
||||
PINDEX GetDataLength() const;
|
||||
BOOL Decode(PASN_Stream & strm);
|
||||
void Encode(PASN_Stream & strm) const;
|
||||
#ifndef PASN_NOPRINTON
|
||||
void PrintOn(ostream & strm) const;
|
||||
#endif
|
||||
Comparison Compare(const PObject & obj) const;
|
||||
PObject * Clone() const;
|
||||
};
|
||||
|
||||
|
||||
//
|
||||
// CallPreserveParam
|
||||
//
|
||||
|
||||
class CISCO_H225_CallPreserveParam : public PASN_Sequence
|
||||
{
|
||||
#ifndef PASN_LEANANDMEAN
|
||||
PCLASSINFO(CISCO_H225_CallPreserveParam, PASN_Sequence);
|
||||
#endif
|
||||
public:
|
||||
CISCO_H225_CallPreserveParam(unsigned tag = UniversalSequence, TagClass tagClass = UniversalTagClass);
|
||||
|
||||
PASN_Boolean m_callPreserveIE;
|
||||
|
||||
PINDEX GetDataLength() const;
|
||||
BOOL Decode(PASN_Stream & strm);
|
||||
void Encode(PASN_Stream & strm) const;
|
||||
#ifndef PASN_NOPRINTON
|
||||
void PrintOn(ostream & strm) const;
|
||||
#endif
|
||||
Comparison Compare(const PObject & obj) const;
|
||||
PObject * Clone() const;
|
||||
};
|
||||
|
||||
|
||||
//
|
||||
// CallSignallingParam
|
||||
//
|
||||
|
||||
class CISCO_H225_CallSignallingParam : public PASN_Sequence
|
||||
{
|
||||
#ifndef PASN_LEANANDMEAN
|
||||
PCLASSINFO(CISCO_H225_CallSignallingParam, PASN_Sequence);
|
||||
#endif
|
||||
public:
|
||||
CISCO_H225_CallSignallingParam(unsigned tag = UniversalSequence, TagClass tagClass = UniversalTagClass);
|
||||
|
||||
enum OptionalFields {
|
||||
e_connectedNumber
|
||||
};
|
||||
|
||||
PASN_OctetString m_connectedNumber;
|
||||
|
||||
PINDEX GetDataLength() const;
|
||||
BOOL Decode(PASN_Stream & strm);
|
||||
void Encode(PASN_Stream & strm) const;
|
||||
#ifndef PASN_NOPRINTON
|
||||
void PrintOn(ostream & strm) const;
|
||||
#endif
|
||||
Comparison Compare(const PObject & obj) const;
|
||||
PObject * Clone() const;
|
||||
};
|
||||
|
||||
|
||||
//
|
||||
// CommonParam
|
||||
//
|
||||
|
||||
class CISCO_H225_CommonParam : public PASN_Sequence
|
||||
{
|
||||
#ifndef PASN_LEANANDMEAN
|
||||
PCLASSINFO(CISCO_H225_CommonParam, PASN_Sequence);
|
||||
#endif
|
||||
public:
|
||||
CISCO_H225_CommonParam(unsigned tag = UniversalSequence, TagClass tagClass = UniversalTagClass);
|
||||
|
||||
CISCO_H225_RedirectIEinfo m_redirectIEinfo;
|
||||
|
||||
PINDEX GetDataLength() const;
|
||||
BOOL Decode(PASN_Stream & strm);
|
||||
void Encode(PASN_Stream & strm) const;
|
||||
#ifndef PASN_NOPRINTON
|
||||
void PrintOn(ostream & strm) const;
|
||||
#endif
|
||||
Comparison Compare(const PObject & obj) const;
|
||||
PObject * Clone() const;
|
||||
};
|
||||
|
||||
|
||||
//
|
||||
// ProgIndParam
|
||||
//
|
||||
|
||||
class CISCO_H225_ProgIndParam : public PASN_Sequence
|
||||
{
|
||||
#ifndef PASN_LEANANDMEAN
|
||||
PCLASSINFO(CISCO_H225_ProgIndParam, PASN_Sequence);
|
||||
#endif
|
||||
public:
|
||||
CISCO_H225_ProgIndParam(unsigned tag = UniversalSequence, TagClass tagClass = UniversalTagClass);
|
||||
|
||||
CISCO_H225_ProgIndIEinfo m_progIndIEinfo;
|
||||
|
||||
PINDEX GetDataLength() const;
|
||||
BOOL Decode(PASN_Stream & strm);
|
||||
void Encode(PASN_Stream & strm) const;
|
||||
#ifndef PASN_NOPRINTON
|
||||
void PrintOn(ostream & strm) const;
|
||||
#endif
|
||||
Comparison Compare(const PObject & obj) const;
|
||||
PObject * Clone() const;
|
||||
};
|
||||
|
||||
|
||||
//
|
||||
// ProtoParam
|
||||
//
|
||||
|
||||
class CISCO_H225_ProtoParam : public PASN_Sequence
|
||||
{
|
||||
#ifndef PASN_LEANANDMEAN
|
||||
PCLASSINFO(CISCO_H225_ProtoParam, PASN_Sequence);
|
||||
#endif
|
||||
public:
|
||||
CISCO_H225_ProtoParam(unsigned tag = UniversalSequence, TagClass tagClass = UniversalTagClass);
|
||||
|
||||
CISCO_H225_QsigNonStdInfo m_qsigNonStdInfo;
|
||||
|
||||
PINDEX GetDataLength() const;
|
||||
BOOL Decode(PASN_Stream & strm);
|
||||
void Encode(PASN_Stream & strm) const;
|
||||
#ifndef PASN_NOPRINTON
|
||||
void PrintOn(ostream & strm) const;
|
||||
#endif
|
||||
Comparison Compare(const PObject & obj) const;
|
||||
PObject * Clone() const;
|
||||
};
|
||||
|
||||
|
||||
//
|
||||
// H323_UU_NonStdInfo
|
||||
//
|
||||
|
||||
class CISCO_H225_H323_UU_NonStdInfo : public PASN_Sequence
|
||||
{
|
||||
#ifndef PASN_LEANANDMEAN
|
||||
PCLASSINFO(CISCO_H225_H323_UU_NonStdInfo, PASN_Sequence);
|
||||
#endif
|
||||
public:
|
||||
CISCO_H225_H323_UU_NonStdInfo(unsigned tag = UniversalSequence, TagClass tagClass = UniversalTagClass);
|
||||
|
||||
enum OptionalFields {
|
||||
e_version,
|
||||
e_protoParam,
|
||||
e_commonParam,
|
||||
e_progIndParam,
|
||||
e_dummy1,
|
||||
e_callMgrParam,
|
||||
e_callSignallingParam,
|
||||
e_dummy2,
|
||||
e_callPreserveParam
|
||||
};
|
||||
|
||||
PASN_Integer m_version;
|
||||
CISCO_H225_ProtoParam m_protoParam;
|
||||
CISCO_H225_CommonParam m_commonParam;
|
||||
CISCO_H225_ProgIndParam m_progIndParam;
|
||||
PASN_OctetString m_dummy1;
|
||||
CISCO_H225_CallMgrParam m_callMgrParam;
|
||||
CISCO_H225_CallSignallingParam m_callSignallingParam;
|
||||
PASN_OctetString m_dummy2;
|
||||
CISCO_H225_CallPreserveParam m_callPreserveParam;
|
||||
|
||||
PINDEX GetDataLength() const;
|
||||
BOOL Decode(PASN_Stream & strm);
|
||||
void Encode(PASN_Stream & strm) const;
|
||||
#ifndef PASN_NOPRINTON
|
||||
void PrintOn(ostream & strm) const;
|
||||
#endif
|
||||
Comparison Compare(const PObject & obj) const;
|
||||
PObject * Clone() const;
|
||||
};
|
||||
|
||||
|
||||
#endif // __CISCO_H225_H
|
||||
|
||||
#endif // if ! H323_DISABLE_CISCO_H225
|
||||
|
||||
|
||||
// End of cisco-h225.h
|
@ -0,0 +1,138 @@
|
||||
#ifndef _GNU_SOURCE
|
||||
#define _GNU_SOURCE
|
||||
#endif
|
||||
/*
|
||||
* ast_h323.cpp
|
||||
*
|
||||
* OpenH323 Channel Driver for ASTERISK PBX.
|
||||
* By Jeremy McNamara
|
||||
* For The NuFone Network
|
||||
*
|
||||
* chan_h323 has been derived from code created by
|
||||
* Michael Manousos and Mark Spencer
|
||||
*
|
||||
* This file is part of the chan_h323 driver for Asterisk
|
||||
*
|
||||
* chan_h323 is free software; you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation; either version 2 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* chan_h323 is distributed 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., 675 Mass Ave, Cambridge, MA 02139, USA.
|
||||
*
|
||||
* Version Info: $Id$
|
||||
*/
|
||||
#include <ptlib.h>
|
||||
#include <h323.h>
|
||||
#include <transports.h>
|
||||
|
||||
#include "ast_h323.h"
|
||||
|
||||
#if VERSION(OPENH323_MAJOR,OPENH323_MINOR,OPENH323_BUILD) < VERSION(1,17,3)
|
||||
MyH323TransportTCP::MyH323TransportTCP(
|
||||
H323EndPoint & endpoint,
|
||||
PIPSocket::Address binding,
|
||||
BOOL listen)
|
||||
: H323TransportTCP(endpoint, binding, listen)
|
||||
{
|
||||
}
|
||||
|
||||
BOOL MyH323TransportTCP::Connect()
|
||||
{
|
||||
if (IsListening())
|
||||
return TRUE;
|
||||
|
||||
PTCPSocket * socket = new PTCPSocket(remotePort);
|
||||
Open(socket);
|
||||
|
||||
channelPointerMutex.StartRead();
|
||||
|
||||
socket->SetReadTimeout(10000/*endpoint.GetSignallingChannelConnectTimeout()*/);
|
||||
|
||||
localPort = endpoint.GetNextTCPPort();
|
||||
WORD firstPort = localPort;
|
||||
for (;;) {
|
||||
PTRACE(4, "H323TCP\tConnecting to "
|
||||
<< remoteAddress << ':' << remotePort
|
||||
<< " (local port=" << localPort << ')');
|
||||
if (socket->Connect(localAddress, localPort, remoteAddress))
|
||||
break;
|
||||
|
||||
int errnum = socket->GetErrorNumber();
|
||||
if (localPort == 0 || (errnum != EADDRINUSE && errnum != EADDRNOTAVAIL)) {
|
||||
PTRACE(1, "H323TCP\tCould not connect to "
|
||||
<< remoteAddress << ':' << remotePort
|
||||
<< " (local port=" << localPort << ") - "
|
||||
<< socket->GetErrorText() << '(' << errnum << ')');
|
||||
channelPointerMutex.EndRead();
|
||||
return SetErrorValues(socket->GetErrorCode(), errnum);
|
||||
}
|
||||
|
||||
localPort = endpoint.GetNextTCPPort();
|
||||
if (localPort == firstPort) {
|
||||
PTRACE(1, "H323TCP\tCould not bind to any port in range " <<
|
||||
endpoint.GetTCPPortBase() << " to " << endpoint.GetTCPPortMax());
|
||||
channelPointerMutex.EndRead();
|
||||
return SetErrorValues(socket->GetErrorCode(), errnum);
|
||||
}
|
||||
}
|
||||
|
||||
socket->SetReadTimeout(PMaxTimeInterval);
|
||||
|
||||
channelPointerMutex.EndRead();
|
||||
|
||||
return OnOpen();
|
||||
}
|
||||
#endif
|
||||
|
||||
BOOL MyH323TransportUDP::DiscoverGatekeeper(H323Gatekeeper &gk, H323RasPDU &pdu, const H323TransportAddress &address)
|
||||
{
|
||||
PThread *thd = PThread::Current();
|
||||
|
||||
/* If we run in OpenH323's thread use it instead of creating new one */
|
||||
if (thd)
|
||||
return H323TransportUDP::DiscoverGatekeeper(gk, pdu, address);
|
||||
|
||||
/* Make copy of arguments to pass them into thread */
|
||||
discoverGatekeeper = &gk;
|
||||
discoverPDU = &pdu;
|
||||
discoverAddress = &address;
|
||||
|
||||
/* Assume discovery thread isn't finished */
|
||||
discoverReady = FALSE;
|
||||
|
||||
/* Create discovery thread */
|
||||
thd = PThread::Create(PCREATE_NOTIFIER(DiscoverMain), 0,
|
||||
PThread::NoAutoDeleteThread,
|
||||
PThread::NormalPriority,
|
||||
"GkDiscovery:%x");
|
||||
|
||||
/* Wait until discovery thread signal us its finished */
|
||||
for(;;) {
|
||||
discoverMutex.Wait();
|
||||
if (discoverReady) /* Thread has been finished */
|
||||
break;
|
||||
discoverMutex.Signal();
|
||||
}
|
||||
discoverMutex.Signal();
|
||||
|
||||
/* Cleanup/delete thread */
|
||||
thd->WaitForTermination();
|
||||
delete thd;
|
||||
|
||||
return discoverResult;
|
||||
}
|
||||
|
||||
void MyH323TransportUDP::DiscoverMain(PThread &thread, INT arg)
|
||||
{
|
||||
PWaitAndSignal m(discoverMutex);
|
||||
|
||||
discoverResult = H323TransportUDP::DiscoverGatekeeper(*discoverGatekeeper, *discoverPDU, *discoverAddress);
|
||||
discoverReady = TRUE;
|
||||
}
|
@ -0,0 +1,78 @@
|
||||
#ifndef COMPAT_H323_H
|
||||
#define COMPAT_H323_H
|
||||
|
||||
#if VERSION(OPENH323_MAJOR,OPENH323_MINOR,OPENH323_BUILD) < VERSION(1,17,3)
|
||||
/**
|
||||
* Workaround for broken (less than 1.17.3) OpenH323 stack to be able to
|
||||
* make TCP connections from specific address
|
||||
*/
|
||||
class MyH323TransportTCP : public H323TransportTCP
|
||||
{
|
||||
PCLASSINFO(MyH323TransportTCP, H323TransportTCP);
|
||||
|
||||
public:
|
||||
MyH323TransportTCP(
|
||||
H323EndPoint & endpoint, ///< H323 End Point object
|
||||
PIPSocket::Address binding = PIPSocket::GetDefaultIpAny(), ///< Local interface to use
|
||||
BOOL listen = FALSE ///< Flag for need to wait for remote to connect
|
||||
);
|
||||
/**Connect to the remote party.
|
||||
*/
|
||||
virtual BOOL Connect();
|
||||
};
|
||||
#else
|
||||
#define MyH323TransportTCP H323TransportTCP
|
||||
#endif /* <VERSION(1,17,3) */
|
||||
|
||||
class MyH323TransportUDP: public H323TransportUDP
|
||||
{
|
||||
PCLASSINFO(MyH323TransportUDP, H323TransportUDP);
|
||||
|
||||
public:
|
||||
MyH323TransportUDP(H323EndPoint &endpoint,
|
||||
PIPSocket::Address binding = PIPSocket::GetDefaultIpAny(),
|
||||
WORD localPort = 0,
|
||||
WORD remotePort = 0): H323TransportUDP(endpoint, binding, localPort, remotePort)
|
||||
{
|
||||
}
|
||||
virtual BOOL DiscoverGatekeeper(H323Gatekeeper &,
|
||||
H323RasPDU &,
|
||||
const H323TransportAddress &);
|
||||
protected:
|
||||
PDECLARE_NOTIFIER(PThread, MyH323TransportUDP, DiscoverMain);
|
||||
H323Gatekeeper *discoverGatekeeper;
|
||||
H323RasPDU *discoverPDU;
|
||||
const H323TransportAddress *discoverAddress;
|
||||
BOOL discoverResult;
|
||||
BOOL discoverReady;
|
||||
PMutex discoverMutex;
|
||||
};
|
||||
|
||||
template <class _Abstract_T, typename _Key_T = PString>
|
||||
class MyPFactory: public PFactory<_Abstract_T, _Key_T>
|
||||
{
|
||||
public:
|
||||
template <class _Contrete_T> class Worker: public PFactory<_Abstract_T, _Key_T>::WorkerBase
|
||||
{
|
||||
public:
|
||||
Worker(const _Key_T &_key, bool singleton = false)
|
||||
:PFactory<_Abstract_T, _Key_T>::WorkerBase(singleton), key(_key)
|
||||
{
|
||||
PFactory<_Abstract_T, _Key_T>::Register(key, this);
|
||||
}
|
||||
~Worker()
|
||||
{
|
||||
PFactory<_Abstract_T, _Key_T>::Unregister(key);
|
||||
}
|
||||
|
||||
private:
|
||||
PString key;
|
||||
};
|
||||
};
|
||||
|
||||
#ifdef H323_REGISTER_CAPABILITY
|
||||
#undef H323_REGISTER_CAPABILITY
|
||||
#endif
|
||||
#define H323_REGISTER_CAPABILITY(cls, capName) static MyPFactory<H323Capability>::Worker<cls> cls##Factory(capName, true)
|
||||
|
||||
#endif /* !defined AST_H323_H */
|
@ -0,0 +1,5 @@
|
||||
{
|
||||
global:
|
||||
_Z11PAssertFuncPKc;
|
||||
local: *;
|
||||
};
|
Loading…
Reference in new issue