[asterisk-scf-commits] asterisk-scf/integration/sip.git branch "directmedia" updated.
Commits to the Asterisk SCF project code repositories
asterisk-scf-commits at lists.digium.com
Tue Aug 2 12:07:41 CDT 2011
branch "directmedia" has been updated
via 83655076d1e60f7442ee0d86c281759419ca6cd4 (commit)
via 114ac8ef996809a440dd86bd65eee997a35c14ce (commit)
via f738f0c7b03d342bae114b88c46fc0a70d22e5ec (commit)
via 753d3c79491352932e066826a03c3bd831e5a58f (commit)
via 50b9944368b79ef6b59fa6a5e488277f744c2389 (commit)
via 1ac8012e89cb5412937c803dbb6b7451d08b297d (commit)
via 319dee0a90edc3e89106b2ac39c464f294602516 (commit)
via 685298fee308c586f5fb058740da50cf83c91847 (commit)
via 713bee189b2ce86098341723895204c3633e32a9 (commit)
via 9404329a8b8249a38809c708bfa55092635f2c92 (commit)
via 736155bbeb65c6636154eb241939bdee6ad97947 (commit)
via 9679afdc83b045a770a457d3bcc0f45d9e84031a (commit)
via 14ab7604cb0ee0582db6b5a41ee9ba3687524ac2 (commit)
via d5456aa0f5700ef9d53821e9695411fa2e0801fd (commit)
via e2a3f36be58aaf8457b09f2aadd7d4e897176532 (commit)
via b18bdac4a5042928247a0a708b7e62fe4cec801f (commit)
via 2b0ba42f2e557f5f5f3e5dba3b41f87a0937d8db (commit)
via c1891fda67849e50c553ccbba326ab431c8fa293 (commit)
via abc64b8ab827c6e1a59a6440f0c82ed4662cd8cb (commit)
via 6f8904c6e789bb9aa71600da73ab81cc06563572 (commit)
via f76eb1c42e1d092c857ab97b1b4d16217117eb72 (commit)
via 5cc1decf6fbf407a4d477f74f7832af9bf1df66d (commit)
via 857167eac79c21b941df3c6da33e18a781ce0200 (commit)
via 4e0d5ca1bd9541b4008fc6509d1d35b023d8da85 (commit)
via 8ad92e0f71d3a6c512290a47009599745b331a49 (commit)
via 7f73fcd33096ed9ae2e62f766d16fe8b5cc14ff0 (commit)
via e808b0bd8e49f3db8b3a4dbb96c8f864b2516d3b (commit)
via 3e10abd5f24d590a9473631e26f3388d948bb1aa (commit)
via 460e021559101b15e5f4b6cc26ed6ccdaf32635a (commit)
via a6c749627f93884ec497b66cafa0f3fe21afb7d6 (commit)
via 9c6e22b59b6f63216629692f7aaad9aef61af856 (commit)
via 36a1f7d1dda63edfeb93da238084c6be4e63d330 (commit)
via a40b4875461e729ed6e2d04881f163c209ab269f (commit)
via 4f837a1a907c55ee0ee181b9efca036fffa42cf9 (commit)
via f3ac2038009f50b1ff84d203999dc79f2a0aea56 (commit)
via 1cd868e3e2c2b46501aa3c37fc92275349befc2f (commit)
via 7fbb239ffea714b04ecd722e176b42d6c2e8b6f6 (commit)
via 63876621702e4612a815f0ec09e8876ae1b1b969 (commit)
via 25a7e17f104524927281ffdccb402e250d55441d (commit)
via 7199e1b3e192331a72ef0b7a4565efcbcd84b6a3 (commit)
via 1bc6f6ab98e4cb6d5700c0e738fce54417bd1ca3 (commit)
via bc7436f4c69f1f9c68fcbd5d5d0da32100c8f83d (commit)
via f10ab08b0e4f1226ad2ba213d98c2ab905f41b51 (commit)
via c3251d20e8eebdcc809f906abd0b021dd3c20045 (commit)
via 548ff031608447bea09380e34f582050fb2ffbe9 (commit)
via 26d2049b6e33bd12b5c522a0b15cd9da38c600ed (commit)
via 5cd389dd2155476fee88c9464bf0e5b6d2a1ab37 (commit)
via 61fe208d8f18a300137f4ea96518d1747cec2be8 (commit)
via e19711fb128b2538bd793dd6993fa1a89a99909e (commit)
via 4f79a16c7cb94d0b6aa5ed13c3bfdc81fc764641 (commit)
via 6577d75e59c8b2f4241103f48fd114da433c8597 (commit)
via 26ec91cf1ad7ae654b38a57e355d85cd7b2a6495 (commit)
via c36e88cc66b3a9f5e5cce710df4359e88079d9d9 (commit)
via b6c7ea6815ff93f17fd2355ef5f003712e0242fe (commit)
via fc8f71159530653f06e3217ec733058ce033d4fb (commit)
via de27bed2a112156fcd9d5af46ecb60bddc136554 (commit)
via 6fed3a431208755055ab5a0cb697e8777e5a221c (commit)
via da5441b188e598254eb9d2cab3334341dec56f8e (commit)
via 866381522f6a26c53e5395989ea8ee433c0e9d59 (commit)
via c93b75ba3affcf73ae553eb1a1913e92d40ff4fe (commit)
via 5c240c011c171b75972122011149a30185945e04 (commit)
via 33e084958ef7f2b355feb8f585d7a95c0a6ac94c (commit)
via c10b4677e95ed80276fd8b712e394c98c8692794 (commit)
via 7d43289b0a830b2c545b4509ca3df7d8dd510186 (commit)
via b41a0dc88850f05a29d0adbf62016e22e625a26e (commit)
via a815ad12e32d57dc4ece7488fe72ce0e82f5e4d9 (commit)
via bd25df69bafa9d87b5c427a11422fc0c0c0fc5bd (commit)
via 5c5e10ab63ed39300e37d63cac1f8154956db1a5 (commit)
via 1b8c6f710bab05f5864611477838d6b56c673eb5 (commit)
via e528d7be81f34ac1789b74ad7415de949a1c19ed (commit)
via b61e242edd548a82eb5a492c7ffb16835746ceaa (commit)
via 32c65526dd56d0bc7e03148dfd407bfa40423fff (commit)
via f256218dea09a6d6e3e177b35d333b6881bc6ed7 (commit)
via ba77572c9c5e5d5abdff517a1f4e144440d5906f (commit)
via bd53a89af2c3104984d46c118e2b7b158155f25c (commit)
via c58ab8b3d3623ccd57d63077f902eda632faaf7d (commit)
via 59ccbfc493c091ebfe6d2a71d61026d9abf5a77c (commit)
via ef373b282be4a218a92e9981fc0c3163c181603b (commit)
via 0a84ba53e4041c3d0afcab7caf954529b60b6f63 (commit)
via 768256f0d324d42905eb9f3832c054193cd750b2 (commit)
via 162d8a50bf6df93a6bc24d06e9042b5026c088ee (commit)
via 41e944174785ff3370b4e165d491e8ff92cc0827 (commit)
via f860396ac01e1581dfe5f56ca30434c8b01b4270 (commit)
via be2641c8edb8a41556c4a0d9c2d86fb023917792 (commit)
via 1ea02fa8ec59f386d62f04a0ef3c1adb77fd5319 (commit)
via 3fa68dd21a3f9a62ca80400e48832d0e6225a2ea (commit)
via c977ec5bbe15874cd222c0b181c8c75419975224 (commit)
via 4f75a2866c33895ced0757ea9f12e31fc40ba093 (commit)
via fc2f64b78c4c57c4c3b8fea3233a9fd3f52147f6 (commit)
via 575abed0a58ba2e9f321b8ccc121a32356c7288d (commit)
via b0d2423c8b01c4432c7289f9648213e16406174a (commit)
via 1dda9776c5a1f55037ac61f5290593e25a5677cb (commit)
via 34797f06098f619838f094d9af7ec1a8c3ad4724 (commit)
via cfa23a3f19760c5266a9f4be0ad9302c977bfe8a (commit)
via a6bfcd47c9f662ac6dd4a2318d96579737a12837 (commit)
via 57993cd407779a00004dc426cb282f06bccb5bd5 (commit)
via 413750665895171f8eae4c8d86ff672b04a8f7cd (commit)
via b874caeeddf70e7b3911a4312494c8ae6de1ffd4 (commit)
via 89e5e5522e81f9f9be4351eb6aab5f346a35586d (commit)
via 448088a4f28ccdf90471cb60642d28bd4fdfd589 (commit)
via abbaa0220ce9faf1e97fd4845ee7f78076436193 (commit)
via 0ffdaa56376184435e2ebb6b59dac42fbde51ab9 (commit)
via 47ce4d4e87b887297289ff6511bde2feb807a476 (commit)
via e2736843dca94388a5ad562b7096a53451e2d037 (commit)
via 9394b46cf8c83c0cfa83e73a34886aeb9f63913b (commit)
via 66b54622b2edd8c6f41fb76950e81121813804e2 (commit)
via 66c548481a50dbbaaa4f886d41af64cc39a5bfa3 (commit)
via b694e978ae5146b198914f8e114fff6333a75662 (commit)
via 1f56ea5e07117170b407e17cc298ea9a79b60860 (commit)
via 706a6986e046909d0035038412d759ba1e6c199c (commit)
via 1624b232fe8cd35ab4a88ae0aa7d74498d98e3c9 (commit)
via 591d2f8183dbed4dce5734ae09e5c2d2cb2de8c3 (commit)
via ae5e868cf90a06e489748299eca32564f248d52b (commit)
via 1a6d54ba8e42b022e2dea6c696ab26ebac0345a2 (commit)
via c5ed036baf4b2eea39a2496e8c8267be96766dc2 (commit)
via 433163526c9c788f53fb52ae4b389e3c77f7dc31 (commit)
via fa87159c9237db447843c6523f1daa7da2a67607 (commit)
via 9ab8adb83f3038c03b8c1619bebcabbffc4e352e (commit)
via cb2abe96f218864eb0088c343b3a91ffa6e578e8 (commit)
via 480dca6e1d5a251dd2ab680f776b46f37a052660 (commit)
via 871d682ad8f89f934e68326fa6b3d861479321da (commit)
via 2e6f61b3697981bb4a1af0a4f2738ff786668269 (commit)
via f8ba9bd5baffb67df87d1726c8635bb7d5d63ff2 (commit)
via 49064db0f2c505427f826c7fc9608e39d3a2ffe2 (commit)
via 72fce78916b051f6d76a4e61de9fb5d26eec10de (commit)
via 51d7a0addacb9eae0fc88bea5b010a0559b4b887 (commit)
via df0ebe1c9b2b5eb5b99f1a5e4140dd13b3a14622 (commit)
via 68f3e523c1a9ab857a1031926d7dff2760d26df1 (commit)
via c5eff00eb9e4e64bac262fbc8f0ff7631c9b5cf8 (commit)
via 5aa5e56f84e645b9c5238215ef4fdeb0eba28f20 (commit)
via dd490ab030f402537f7edac3d1fcd443bc602e68 (commit)
via 44db9747153ed1c73ff0d95cfc977ea5548403db (commit)
via 572289496c4142e8cc748cfb641efd846b2a8dc0 (commit)
via d4899c06c3c254cdff2ceb2db6d2121dc6ad1f01 (commit)
via 69d20d88cd1823c628ac51fdb9d5c86f545deede (commit)
via 65074861612bdb49965f66e09c55ccbec46f960d (commit)
via d23a05405132459594db5c41bd4485207a887cce (commit)
via 18220a9ec61fbb51381e8405c4b9c7e0e1c785a8 (commit)
via f63d75ebd26753eed1a2733ecbd21fe8f2a58044 (commit)
via b5c03db28904b7ab0b220ca5030a1dd4828169a1 (commit)
via e006915bdba4e8dead401dd98c896122e32b8974 (commit)
via 53b69af9a3afc348e8a00f2ca45ccd1225155c07 (commit)
via f3343d7b5205f981b8d4002991f233a4e4e9645e (commit)
via 53a20db873d9eb943ec65f9a6f10da125108ae94 (commit)
via 7651845251617268572d954cc1cc94d1c609f7f7 (commit)
via 529b6387bda5b3287a20d5166638d0ea08901e4d (commit)
via a90a0ae0e000a0679619e1dd2d0c065baaa5fb8c (commit)
via 1e847b293c9f7ec3e6b2f051768f59a07d66f7d7 (commit)
via d479d28083104c2f4ec3aa74f232c46a1ad2e231 (commit)
via 6913f102979144b1203fd032d1afffcf7cd8d09c (commit)
via 5f9e9fd318c13fa5d58c30a6d2ab85d33fe59866 (commit)
via 7837bf220f03f26090c509f427c003fc00deae76 (commit)
via 0910249b0079177bd957635dd46286b16e769247 (commit)
via fbfa98d635f3cd6737585691cf82b4e65a0f1570 (commit)
via b34fd7b76ef0badf930c078b692a56a8d36b6e23 (commit)
via 6a20f1ab5164bf1bbca0a3917ed5d3336773feeb (commit)
via 8635a95c6569029b979ea21c9a4de78f35dac2cb (commit)
via 41084ebbf79fb23cce9c1581b5f45c6aaffe7410 (commit)
via 783d705e83c78f171ebd2128c5dadecf8cb9e44d (commit)
via 8c1955a5240967abe7e74b8b7d5d3bc067c71842 (commit)
via aff68781848311763ebb92e299750dfe4b61eb5c (commit)
via f0d27ad5ba9caa722ce22b36975d1d4be70be762 (commit)
via 78914f7922bf4620086eef4a77bead6ff55cf79d (commit)
via f4195acb409cf8ecaac3d63e3c85a52e98bbd9b1 (commit)
via dc9a45bea83aa73e62865969c445f2a8212be462 (commit)
via 5a0a9a73584c42a5f188f3a1436512ccb6a01bbe (commit)
via acac1d74989f8aa6c28e9a9ef1b0ccb85197e30d (commit)
via 81ddb566141c01bece3cdb115aaef0727fcc1558 (commit)
from ff2e2cf69648586840f9570f807e986ba43603df (commit)
Summary of changes:
config/SipConfigurator.py | 68 ++-
config/test_sip.conf | 2 +
.../SipSessionManager/SipConfigurationIf.ice | 830 +++++++++++---------
.../SipSessionManager/SipStateReplicationIf.ice | 91 ++-
slice/SipIf.ice | 1 +
src/AuthManager.cpp | 440 +++++++++++
src/AuthManager.h | 183 +++++
src/CMakeLists.txt | 31 +
src/DebugUtil.h | 33 +
src/{PJSipLoggingModule.h => NATOptions.h} | 30 +-
src/PJSipLoggingModule.cpp | 1 +
src/PJSipManager.cpp | 300 +++++---
src/PJSipManager.h | 81 ++-
src/PJSipModule.cpp | 45 +-
src/PJSipModule.h | 12 +-
src/PJSipRegistrarModule.cpp | 831 ++++++++++++++++++++
src/PJSipRegistrarModule.h | 203 +++++
src/PJSipRegistrarModuleConstruction.cpp | 104 +++
src/PJSipSessionModule.cpp | 496 ++++++++++--
src/PJSipSessionModule.h | 105 ++--
src/PJSipSessionModuleConstruction.cpp | 31 +-
src/PJUtil.h | 37 +
src/STUNModule.cpp | 157 ++++
src/STUNModule.h | 101 +++
src/STUNTransport.cpp | 416 ++++++++++
src/STUNTransport.h | 44 +
src/STUNTransportConfig.cpp | 131 +++
src/STUNTransportConfig.h | 52 ++
src/SipConfiguration.cpp | 196 ++++-
src/SipConfiguration.h | 2 +-
src/SipEndpoint.cpp | 77 ++-
src/SipEndpoint.h | 77 ++-
src/SipEndpointFactory.cpp | 17 +-
src/SipEndpointFactory.h | 7 +-
src/SipModule.h | 68 ++
src/SipRegistrarListener.cpp | 116 +++
src/SipRegistrarListener.h | 46 ++
src/SipSession.cpp | 594 +++++++++++++--
src/SipSession.h | 89 ++-
src/SipSessionManagerApp.cpp | 131 +++-
src/SipSessionManagerEndpointLocator.cpp | 14 +-
src/SipStateReplicator.h | 3 +-
src/SipStateReplicatorApp.cpp | 2 +-
src/SipStateReplicatorListener.cpp | 259 +++++-
src/SipTelephonyEventSink.cpp | 220 ++++++
src/SipTelephonyEventSink.h | 61 ++
src/SipTelephonyEventSource.cpp | 108 +++
src/SipTelephonyEventSource.h | 63 ++
src/TCPTransport.cpp | 111 +++
src/TCPTransport.h | 41 +
src/TLSTransport.cpp | 93 +++
src/TLSTransport.h | 43 +
src/Transports.cpp | 71 ++
src/Transports.h | 74 ++
src/UDPTransport.cpp | 117 +++
src/UDPTransport.h | 41 +
56 files changed, 6660 insertions(+), 937 deletions(-)
create mode 100644 src/AuthManager.cpp
create mode 100644 src/AuthManager.h
create mode 100644 src/DebugUtil.h
copy src/{PJSipLoggingModule.h => NATOptions.h} (50%)
create mode 100644 src/PJSipRegistrarModule.cpp
create mode 100644 src/PJSipRegistrarModule.h
create mode 100644 src/PJSipRegistrarModuleConstruction.cpp
create mode 100644 src/PJUtil.h
create mode 100644 src/STUNModule.cpp
create mode 100644 src/STUNModule.h
create mode 100644 src/STUNTransport.cpp
create mode 100644 src/STUNTransport.h
create mode 100644 src/STUNTransportConfig.cpp
create mode 100644 src/STUNTransportConfig.h
create mode 100644 src/SipModule.h
create mode 100644 src/SipRegistrarListener.cpp
create mode 100644 src/SipRegistrarListener.h
mode change 100644 => 100755 src/SipSession.cpp
create mode 100644 src/SipTelephonyEventSink.cpp
create mode 100644 src/SipTelephonyEventSink.h
create mode 100644 src/SipTelephonyEventSource.cpp
create mode 100644 src/SipTelephonyEventSource.h
create mode 100644 src/TCPTransport.cpp
create mode 100644 src/TCPTransport.h
create mode 100644 src/TLSTransport.cpp
create mode 100644 src/TLSTransport.h
create mode 100644 src/Transports.cpp
create mode 100644 src/Transports.h
create mode 100644 src/UDPTransport.cpp
create mode 100644 src/UDPTransport.h
- Log -----------------------------------------------------------------
commit 83655076d1e60f7442ee0d86c281759419ca6cd4
Merge: 114ac8e f738f0c
Author: Joshua Colp <jcolp at digium.com>
Date: Tue Aug 2 14:08:00 2011 -0300
Merge branch 'master' into directmedia
Conflicts:
slice/AsteriskSCF/Replication/SipSessionManager/SipStateReplicationIf.ice
src/PJSipSessionModule.cpp
src/SipEndpoint.h
diff --cc slice/AsteriskSCF/Replication/SipSessionManager/SipStateReplicationIf.ice
index 1376ca9,9f9cbec..abf7951
--- a/slice/AsteriskSCF/Replication/SipSessionManager/SipStateReplicationIf.ice
+++ b/slice/AsteriskSCF/Replication/SipSessionManager/SipStateReplicationIf.ice
@@@ -152,17 -152,17 +152,17 @@@ module V
{
//XXX There probably needs to be a lot more specified
//here, but frankly I have no clue.
- string mEndpointName;
- Ice::Identity mSessionObjectId;
- Ice::Identity mMediaSessionObjectId;
- Ice::Identity mSessionControllerObjectId;
- AsteriskSCF::Media::V1::StreamSourceSeq mSources;
- AsteriskSCF::Media::V1::StreamSinkSeq mSinks;
- AsteriskSCF::Media::V1::StreamInformationDict mStreams;
- RTPMediaSessionDict mRTPMediaSessions;
- SessionListenerSeq mListeners;
- AsteriskSCF::SessionCommunications::V1::Bridge *mBridge;
- AsteriskSCF::SessionCommunications::V1::SessionCookieDict mCookies;
+ string endpointName;
+ Ice::Identity sessionObjectId;
+ Ice::Identity mediaSessionObjectId;
+ Ice::Identity sessionControllerObjectId;
+ AsteriskSCF::Media::V1::StreamSourceSeq sources;
+ AsteriskSCF::Media::V1::StreamSinkSeq sinks;
+ AsteriskSCF::Media::V1::StreamInformationDict streams;
- RTPMediaSessionSeq rtpMediaSessions;
++ RTPMediaSessionDict rtpMediaSessions;
+ SessionListenerSeq listeners;
+ AsteriskSCF::SessionCommunications::V1::Bridge *bridge;
+ AsteriskSCF::SessionCommunications::V1::SessionCookieDict cookies;
};
class SipRegistrarStateItem extends SipStateItem
diff --cc src/PJSipSessionModule.cpp
index 6f28054,44a1469..98cfd21
--- a/src/PJSipSessionModule.cpp
+++ b/src/PJSipSessionModule.cpp
@@@ -250,26 -252,26 +252,26 @@@ void PJSipSessionModule::replicateState
{
boost::shared_lock<boost::shared_mutex> lock(sessionInfo->mLock);
lg(Debug) << "--- Begin Session " << sessionInfo->mSessionState->key;
- lg(Debug) << "Endpoint name: " << sessionInfo->mSessionState->mEndpointName;
- lg(Debug) << "Session object identity: " << sessionInfo->mSessionState->mSessionObjectId.name;
- lg(Debug) << "Media session object identity: " << sessionInfo->mSessionState->mMediaSessionObjectId.name;
+ lg(Debug) << "Endpoint name: " << sessionInfo->mSessionState->endpointName;
+ lg(Debug) << "Session object identity: " << sessionInfo->mSessionState->sessionObjectId.name;
+ lg(Debug) << "Media session object identity: " << sessionInfo->mSessionState->mediaSessionObjectId.name;
- for (RTPMediaSessionDict::const_iterator mediaSession = sessionInfo->mSessionState->mRTPMediaSessions.begin();
- mediaSession != sessionInfo->mSessionState->mRTPMediaSessions.end();
- for (RTPMediaSessionSeq::const_iterator mediaSession = sessionInfo->mSessionState->rtpMediaSessions.begin();
++ for (RTPMediaSessionDict::const_iterator mediaSession = sessionInfo->mSessionState->rtpMediaSessions.begin();
+ mediaSession != sessionInfo->mSessionState->rtpMediaSessions.end();
++mediaSession)
{
- lg(Debug) << "Media session: " << (*mediaSession);
+ lg(Debug) << "Media session: " << mediaSession->second;
}
- lg(Debug) << "Bridge: " << sessionInfo->mSessionState->mBridge;
+ lg(Debug) << "Bridge: " << sessionInfo->mSessionState->bridge;
lg(Debug) << "--- Begin Invite Session " << sessionInfo->mInviteState->key;
- lg(Debug) << "Current state: " << sessionInfo->mInviteState->mCurrentState;
- lg(Debug) << "Cancelling: " << sessionInfo->mInviteState->mCancelling;
- lg(Debug) << "Pending cancel: " << sessionInfo->mInviteState->mPendingCancel;
- lg(Debug) << "Cause: " << sessionInfo->mInviteState->mCause;
- lg(Debug) << "Cause text: " << sessionInfo->mInviteState->mCauseText;
- lg(Debug) << "Notify: " << sessionInfo->mInviteState->mNotify;
- lg(Debug) << "Last Ack CSeq: " << sessionInfo->mInviteState->mLastAckCseq;
+ lg(Debug) << "Current state: " << sessionInfo->mInviteState->currentState;
+ lg(Debug) << "Cancelling: " << sessionInfo->mInviteState->cancelling;
+ lg(Debug) << "Pending cancel: " << sessionInfo->mInviteState->pendingCancel;
+ lg(Debug) << "Cause: " << sessionInfo->mInviteState->cause;
+ lg(Debug) << "Cause text: " << sessionInfo->mInviteState->causeText;
+ lg(Debug) << "Notify: " << sessionInfo->mInviteState->notify;
+ lg(Debug) << "Last Ack CSeq: " << sessionInfo->mInviteState->lastAckCseq;
if (sessionInfo->mNeedsRemoval == true)
{
removeItems.push_back(sessionInfo->mInviteState->key);
diff --cc src/SipEndpoint.h
index f462829,d4afefc..9db49e9
--- a/src/SipEndpoint.h
+++ b/src/SipEndpoint.h
@@@ -157,8 -158,9 +158,11 @@@ public
// Whether we are using IPv6 for media transport
// or not.
bool rtpOverIPv6;
+ // Whether we are allowing direct media or not
+ bool directMedia;
+ // The method by which we will transmit
+ // DTMF to an endpoint
+ AsteriskSCF::Configuration::SipSessionManager::V1::SipDTMFOption dtmf;
//
// Enables ICE transport.
//
@@@ -337,8 -337,8 +341,9 @@@ public
void setMediaNATOptions(bool useICE, bool useTURN);
void setSRTPOptions(const SipEndpointMediaSRTPConfig& srtpConfig);
void setSignalingNATOptions(bool enable);
+
AsteriskSCF::Media::V1::StreamInformationDict getStreamTopology();
+ void setDTMFMethod(AsteriskSCF::Configuration::SipSessionManager::V1::SipDTMFOption dtmf);
private:
/**
diff --cc src/SipSession.cpp
index 22810bf,aa2c3f5..29926fc
--- a/src/SipSession.cpp
+++ b/src/SipSession.cpp
@@@ -965,12 -811,13 +994,13 @@@ SipSession::SipSession(const Ice::Objec
* Replica constructor.
*/
SipSession::SipSession(const Ice::ObjectAdapterPtr& adapter, const SipEndpointPtr& endpoint,
- const std::string& destination, const Ice::Identity& /* sessionid */,
+ const std::string& destination, const Ice::Identity& sessionid,
const Ice::Identity& controllerid,
- const Ice::Identity& mediaid, const AsteriskSCF::Replication::SipSessionManager::V1::RTPMediaSessionSeq& mediasessions,
+ const Ice::Identity& mediaid, const AsteriskSCF::Replication::SipSessionManager::V1::RTPMediaSessionDict& mediasessions,
const AsteriskSCF::Media::V1::StreamSourceSeq& sources, const AsteriskSCF::Media::V1::StreamSinkSeq& sinks,
const PJSipManagerPtr& manager, const AsteriskSCF::Core::Discovery::V1::ServiceLocatorPrx& serviceLocator,
- const AsteriskSCF::System::Component::V1::ReplicaPtr& replica, bool isUAC, const NATEndpointOptions& natOptions)
+ const AsteriskSCF::System::Component::V1::ReplicaPtr& replica, bool isUAC, const SipEndpointConfig &config,
+ const NATEndpointOptions& natOptions)
: mImplPriv(new SipSessionPriv(adapter, endpoint, destination, manager, serviceLocator, replica, natOptions))
{
activateIceObjects(mImplPriv->mManager->getSessionModule()->getSessionCreationHooks());
diff --cc src/SipSession.h
index f52619d,10faf86..09f1bc3
--- a/src/SipSession.h
+++ b/src/SipSession.h
@@@ -109,10 -114,10 +114,10 @@@ public
const AsteriskSCF::SessionCommunications::V1::SessionListenerPrx&, const PJSipManagerPtr& manager,
const AsteriskSCF::Core::Discovery::V1::ServiceLocatorPrx& serviceLocator,
const AsteriskSCF::System::Component::V1::ReplicaPtr& replica,
- bool ipv6, bool isUAC, const NATEndpointOptions& natOptions);
+ bool ipv6, bool isUAC, const SipEndpointConfig& config, const NATEndpointOptions& natOptions);
SipSession(const Ice::ObjectAdapterPtr&, const SipEndpointPtr&, const std::string&, const Ice::Identity&, const Ice::Identity&,
- const Ice::Identity&, const AsteriskSCF::Replication::SipSessionManager::V1::RTPMediaSessionSeq&,
+ const Ice::Identity&, const AsteriskSCF::Replication::SipSessionManager::V1::RTPMediaSessionDict&,
const AsteriskSCF::Media::V1::StreamSourceSeq&, const AsteriskSCF::Media::V1::StreamSinkSeq&,
const PJSipManagerPtr& manager, const AsteriskSCF::Core::Discovery::V1::ServiceLocatorPrx& serviceLocator,
const AsteriskSCF::System::Component::V1::ReplicaPtr& replica,
@@@ -261,9 -282,17 +286,17 @@@
void setStreams(const AsteriskSCF::Media::V1::StreamInformationDict& streams);
- AsteriskSCF::Replication::SipSessionManager::V1::RTPMediaSessionSeq getRTPMediaSessions();
+ AsteriskSCF::Replication::SipSessionManager::V1::RTPMediaSessionDict getRTPMediaSessions();
void enqueueSessionWork(const AsteriskSCF::System::WorkQueue::V1::SuspendableWorkPtr&);
+
+ void setTelephonyEventSourcesAndSinks(const SipEndpointConfig& config);
+
+ bool isTelephonyEventSource();
+
+ SipTelephonyEventSourcePtr getSipTelephonyEventSource();
+
+ bool isTelephonyEventSink();
private:
void initializePJSIPStructs();
commit 114ac8ef996809a440dd86bd65eee997a35c14ce
Merge: ff2e2cf 50b9944
Author: Joshua Colp <jcolp at digium.com>
Date: Tue Aug 2 13:50:24 2011 -0300
Merge branch 'master' into directmedia
Conflicts:
config/Sip.config
slice/AsteriskSCF/Configuration/SipSessionManager/SipConfigurationIf.ice
slice/AsteriskSCF/Replication/SipSessionManager/SipStateReplicationIf.ice
src/PJSipSessionModule.cpp
src/PJSipSessionModuleConstruction.cpp
src/SipConfiguration.cpp
src/SipEndpoint.cpp
src/SipEndpoint.h
src/SipSession.cpp
src/SipSession.h
diff --cc slice/AsteriskSCF/Configuration/SipSessionManager/SipConfigurationIf.ice
index f1c90c7,715e039..1612a12
--- a/slice/AsteriskSCF/Configuration/SipSessionManager/SipConfigurationIf.ice
+++ b/slice/AsteriskSCF/Configuration/SipSessionManager/SipConfigurationIf.ice
@@@ -32,418 -32,457 +32,468 @@@ module SipSessionManage
["suppress"]
module V1
{
- /**
- * Service locator category for finding the configuration service
- */
- const string ConfigurationDiscoveryCategory = "SipConfiguration";
-
- /**
- * Service locator parameters class for discovering the configuration service
- */
- unsliceable class SipConfigurationParams extends AsteriskSCF::Core::Discovery::V1::ServiceLocatorParams
- {
- /**
- * Unique name for the configuration service
- */
- string name;
- };
-
- /**
- * Local visitor class for visiting SIP configuration groups
- */
- local class SipConfigurationGroupVisitor extends AsteriskSCF::System::Configuration::V1::ConfigurationGroupVisitor
- {
- };
-
- /**
- * Generic SIP configuration group
- */
- ["visitor:SipConfigurationGroupVisitor"] class SipConfigurationGroup extends AsteriskSCF::System::Configuration::V1::ConfigurationGroup
- {
- };
-
- /**
- * General SIP configuration group that contains general items related to the SIP component as a whole
- */
- class SipGeneralGroup extends SipConfigurationGroup
- {
- };
-
- /**
- * Local visitor class for visiting SIP configuration items
- */
- local class SipConfigurationItemVisitor extends AsteriskSCF::System::Configuration::V1::ConfigurationItemVisitor
- {
- };
- /**
- * Generic SIP configuration item
- */
- ["visitor:SipConfigurationItemVisitor"] class SipConfigurationItem extends AsteriskSCF::System::Configuration::V1::ConfigurationItem
- {
- };
-
- /**
- * SIP Endpoint group, used to configure an endpoint
- */
- class SipEndpointGroup extends SipConfigurationGroup
- {
- /**
- * Name of the endpoint being configured
- */
- string name;
- };
-
- /**
- * SIP Domain group, used to configure a specific domain
- */
- class SipDomainGroup extends SipConfigurationGroup
- {
- /**
- * Name of the domain being configured
- */
- string domain;
- };
-
- /**
- * Domain item for bindings
- */
- class SipBindingsItem extends SipConfigurationItem
- {
- /**
- * Addresses the domain is reachable over
- */
- Ice::StringSeq bindings;
- };
-
- /**
- * Generic SIP transport group that others derive from, primarily created since each one has
- * the requirement of a name
- */
- ["visitor:SipConfigurationGroupVisitor"] class SipTransportGroup extends SipConfigurationGroup
- {
- /**
- * Name of the specific transport. Since each one may have multiple transports this differentiates
- * them.
- */
- string name;
- };
+ /**
+ * Service locator category for finding the configuration service
+ */
+ const string ConfigurationDiscoveryCategory = "SipConfiguration";
- /**
- * Host information configuration item
- */
- ["visitor:SipConfigurationItemVisitor"] class SipHostItem extends SipConfigurationItem
- {
- /**
- * String containing the IP address or string address
- */
- string host;
-
- /**
- * Port number
- */
- int port;
- };
+ /**
+ * Service locator parameters class for discovering the configuration service
+ */
+ unsliceable class SipConfigurationParams extends AsteriskSCF::Core::Discovery::V1::ServiceLocatorParams
+ {
+ /**
+ * Unique name for the configuration service
+ */
+ string name;
+ };
+
+ /**
+ * Local visitor class for visiting SIP configuration groups
+ */
+ local class SipConfigurationGroupVisitor extends AsteriskSCF::System::Configuration::V1::ConfigurationGroupVisitor
+ {
+ };
- /**
- * Source transport address configuration item
- */
- ["visitor:SipConfigurationItemVisitor"] class SipSourceTransportAddressItem extends SipHostItem
- {
- };
+ /**
+ * Generic SIP configuration group
+ */
+ ["visitor:SipConfigurationGroupVisitor"] class SipConfigurationGroup extends AsteriskSCF::System::Configuration::V1::ConfigurationGroup
+ {
+ };
- /**
- * Target destination address configuration item
- */
- ["visitor:SipConfigurationItemVisitor"] class SipTargetDestinationAddressItem extends SipHostItem
- {
- };
+ /**
+ * General SIP configuration group that contains general items related to the SIP component as a whole
+ */
+ class SipGeneralGroup extends SipConfigurationGroup
+ {
+ };
- /**
- * Crypto certificate configuration item
- */
- class SipCryptoCertificateItem extends SipConfigurationItem
- {
- /**
- * Full location of certificate authority file
- */
- string certificateAuthority;
-
- /**
- * Full location of certificate file
- */
- string certificate;
-
- /**
- * Full location of private key file
- */
- string privateKey;
-
- /**
- * Password to open private key file
- */
- string privateKeyPassword;
- };
+ /**
+ * Local visitor class for visiting SIP configuration items
+ */
+ local class SipConfigurationItemVisitor extends AsteriskSCF::System::Configuration::V1::ConfigurationItemVisitor
+ {
+ };
- /**
- * Crypto requirement configuration item
- */
- class SipCryptoRequirementsItem extends SipConfigurationItem
- {
- /**
- * Require verification of server certificate
- */
- bool requireVerifiedServer = false;
-
- /**
- * Require verification of client certificate
- */
- bool requireVerifiedClient = false;
-
- /**
- * Require client certificate be present
- */
- bool requireClientCertificate = false;
- };
+ /**
+ * Generic SIP configuration item
+ */
+ ["visitor:SipConfigurationItemVisitor"] class SipConfigurationItem extends AsteriskSCF::System::Configuration::V1::ConfigurationItem
+ {
+ };
- /**
- * TLS protocol methods
- */
- enum TLSProtocolMethod
- {
- PROTOCOLMETHODUNSPECIFIED,
- PROTOCOLMETHODTLSV1,
- PROTOCOLMETHODSSLV2,
- PROTOCOLMETHODSSLV3,
- PROTOCOLMETHODSSLV23,
- };
+ /**
+ * SIP Endpoint group, used to configure an endpoint
+ */
+ class SipEndpointGroup extends SipConfigurationGroup
+ {
+ /**
+ * Name of the endpoint being configured
+ */
+ string name;
+ };
+
+ /**
+ * SIP Domain group, used to configure a specific domain
+ */
+ class SipDomainGroup extends SipConfigurationGroup
+ {
+ /**
+ * Name of the domain being configured
+ */
+ string domain;
+ };
+
+ /**
+ * Domain item for bindings
+ */
+ class SipBindingsItem extends SipConfigurationItem
+ {
+ /**
+ * Addresses the domain is reachable over
+ */
+ Ice::StringSeq bindings;
+ };
+
+ /**
+ * Generic SIP transport group that others derive from, primarily created since each one has
+ * the requirement of a name
+ */
+ class SipTransportGroup extends SipConfigurationGroup
+ {
+ /**
+ * Name of the specific transport. Since each one may have multiple transports this differentiates
+ * them.
+ */
+ string name;
+ };
+
+ /**
+ * Host information configuration item
+ */
+ class SipHostItem extends SipConfigurationItem
+ {
+ /**
+ * String containing the IP address or string address
+ */
+ string host;
+
+ /**
+ * Port number
+ */
+ int port;
+ };
+
+ /**
+ * Source transport address configuration item
+ */
+ class SipSourceTransportAddressItem extends SipHostItem
+ {
+ };
- /**
- * General crypto configuration item
- */
- class SipCryptoItem extends SipConfigurationItem
- {
- /**
- * TLS protocol method to use
- */
- TLSProtocolMethod protocolMethod = PROTOCOLMETHODUNSPECIFIED;
-
- /**
- * Supported ciphers (OpenSSL format)
- */
- string supportedCiphers;
-
- /**
- * Server name
- */
- string serverName;
-
- /**
- * TLS negotiation timeout in seconds
- */
- int timeout = 0;
- };
+ /**
+ * Target destination address configuration item
+ */
+ class SipTargetDestinationAddressItem extends SipHostItem
+ {
+ };
- /**
- * Routing service configuration item
- */
- class SipRoutingItem extends SipConfigurationItem
- {
- /**
- * Name of the routing service to use
- */
- string routingServiceName;
- };
+ /**
+ * Crypto certificate configuration item
+ */
+ class SipCryptoCertificateItem extends SipConfigurationItem
+ {
+ /**
+ * Full location of certificate authority file
+ */
+ string certificateAuthority;
+
+ /**
+ * Full location of certificate file
+ */
+ string certificate;
+
+ /**
+ * Full location of private key file
+ */
+ string privateKey;
+
+ /**
+ * Password to open private key file
+ */
+ string privateKeyPassword;
+ };
+
+ /**
+ * Crypto requirement configuration item
+ */
+ class SipCryptoRequirementsItem extends SipConfigurationItem
+ {
+ /**
+ * Require verification of server certificate
+ */
+ bool requireVerifiedServer = false;
+
+ /**
+ * Require verification of client certificate
+ */
+ bool requireVerifiedClient = false;
+
+ /**
+ * Require client certificate be present
+ */
+ bool requireClientCertificate = false;
+ };
+
+ /**
+ * TLS protocol methods
+ */
+ enum TLSProtocolMethod
+ {
+ PROTOCOLMETHODUNSPECIFIED,
+ PROTOCOLMETHODTLSV1,
+ PROTOCOLMETHODSSLV2,
+ PROTOCOLMETHODSSLV3,
+ PROTOCOLMETHODSSLV23,
+ };
+
+ /**
+ * General crypto configuration item
+ */
+ class SipCryptoItem extends SipConfigurationItem
+ {
+ /**
+ * TLS protocol method to use
+ */
+ TLSProtocolMethod protocolMethod = PROTOCOLMETHODUNSPECIFIED;
+
+ /**
+ * Supported ciphers (OpenSSL format)
+ */
+ string supportedCiphers;
+
+ /**
+ * Server name
+ */
+ string serverName;
+
+ /**
+ * TLS negotiation timeout in seconds
+ */
+ int timeout = 0;
+ };
+
+ /**
+ * SRTP Crypto Key information.
+ */
+ class SRTPCryptoKey
+ {
+ /**
+ * The cipher suite name.
+ */
+ string suite;
- /**
- * Direct media configuration item
- */
- class DirectMediaItem extends SipConfigurationItem
- {
- /**
- * Whether direct media support is enabled or not
- */
- bool enabled = false;
- };
+ /**
+ * The key information for the suite.
+ */
+ string cryptoKey;
+ };
- /**
- * RTP Media service configuration item
- */
- class SipRTPMediaServiceItem extends SipConfigurationItem
- {
- /**
- * Name of the RTP media service to use
- */
- string mediaServiceName;
-
- /**
- * Whether to choose an IPv6 RTP media service or not
- */
- bool requireIPv6 = false;
- };
+ sequence<SRTPCryptoKey> SRTPCryptoKeySeq;
- /**
- * Signaling NAT configuration item
- */
- class SipSignalingNATItem extends SipConfigurationItem
- {
- /**
- * Boolean for whether STUN is enabled
- */
- bool stun;
- };
+ /**
++ * Direct media configuration item
++ */
++class DirectMediaItem extends SipConfigurationItem
++{
++ /**
++ * Whether direct media support is enabled or not
++ */
++ bool enabled = false;
++};
++
++/**
+ * SRTP crypto configuration.
+ */
+ class SRTPCryptoItem extends SipConfigurationItem
+ {
- /**
- * Media NAT configuration item
- */
- class SipMediaNATItem extends SipConfigurationItem
- {
- /**
- * Boolean for whether symmetric RTP is enabled
- */
- bool symmetricRTP;
-
- /**
- * Boolean for whether STUN is enabled
- */
- bool stun;
-
- /**
- * Boolean for whether ICE is enabled
- */
- bool interactiveconnectivityestablishment;
-
- /**
- * Boolean for whether TURN is enabled
- */
- bool turn;
- };
+ /**
+ * Most of the time the following values will be false. They can be overriden to be true however.
+ */
+ bool enableAuthentication;
+ bool enableEncryption;
- /**
- * Access control lists item
- */
- class SipACLItem extends SipConfigurationItem
- {
- /**
- * Name of this ACL item. A user may want to have multiple.
- */
- string name;
-
- /**
- * Ranges of allowed hosts
- */
- Ice::StringSeq allowRanges;
-
- /**
- * Specific allowed hosts
- */
- Ice::StringSeq allowHosts;
-
- /**
- * Ranges of denied hosts
- */
- Ice::StringSeq denyRanges;
-
- /**
- * Specific denied hosts
- */
- Ice::StringSeq denyHosts;
- };
+ /**
+ * The suites and keys supported by this endpoint.
+ */
+ SRTPCryptoKeySeq cryptoKeys;
+ };
+ /**
+ * Routing service configuration item
+ */
+ class SipRoutingItem extends SipConfigurationItem
+ {
+ /**
+ * Name of the routing service to use
+ */
+ string routingServiceName;
+ };
+
+ /**
+ * RTP Media service configuration item
+ */
+ class SipRTPMediaServiceItem extends SipConfigurationItem
+ {
+ /**
+ * Name of the RTP media service to use
+ */
+ string mediaServiceName;
+
+ /**
+ * Whether to choose an IPv6 RTP media service or not
+ */
+ bool requireIPv6 = false;
+ };
+
+ /**
+ * Signaling NAT configuration item
+ */
+ class SipSignalingNATItem extends SipConfigurationItem
+ {
+ /**
+ * Boolean for whether STUN is enabled
+ */
+ bool stun;
+ };
+
+ /**
+ * STUN server to be used by Sip signalling.
+ */
+ class SipSignalingSTUNHostItem extends SipConfigurationItem
+ {
+ /**
+ * Address for the STUN server.
+ **/
+ string address;
+
+ /**
+ * Port for the STUN host.
+ */
+ int port;
+ };
+
+ /**
+ * Media NAT configuration item
+ */
+ class SipMediaNATItem extends SipConfigurationItem
+ {
+ /**
+ * Boolean for whether ICE is enabled
+ */
+ bool enableICE;
+
+ /**
+ * Boolean for whether TURN is enabled
+ */
+ bool enableTURN;
+ };
+
+ /**
+ * Access control lists item
+ */
+ class SipACLItem extends SipConfigurationItem
+ {
+ /**
+ * Name of this ACL item. A user may want to have multiple.
+ */
+ string name;
+
+ /**
+ * Ranges of allowed hosts
+ */
+ Ice::StringSeq allowRanges;
+
+ /**
+ * Specific allowed hosts
+ */
+ Ice::StringSeq allowHosts;
+
+ /**
+ * Ranges of denied hosts
+ */
+ Ice::StringSeq denyRanges;
+
+ /**
+ * Specific denied hosts
+ */
+ Ice::StringSeq denyHosts;
+ };
+
+ /**
+ * Allowable call directions
+ */
+ enum SipAllowableCallDirection
+ {
+ Disabled,
+ Inbound,
+ Outbound,
+ Both,
+ };
+
+ /**
+ * Allowable call direction item
+ */
+ class SipAllowableCallDirectionItem extends SipConfigurationItem
+ {
+ /**
+ * What direction is permitted for this endpoint
+ */
+ SipAllowableCallDirection callDirection = Both;
+ };
+
+ /**
+ * Allowable media format item
+ */
+ class SipMediaFormatItem extends SipConfigurationItem
+ {
/**
- * Allowable call directions
+ * Name of the media format
*/
- enum SipAllowableCallDirection
- {
- Disabled,
- Inbound,
- Outbound,
- Both,
- };
+ string name;
/**
- * Allowable call direction item
+ * Sample rate for frames
+ *
+ * This is specified in Hz and has a default value of 8000.
*/
- class SipAllowableCallDirectionItem extends SipConfigurationItem
- {
- /**
- * What direction is permitted for this endpoint
- */
- SipAllowableCallDirection callDirection = Both;
- };
+ int sampleRate = 8000;
/**
- * Allowable media format item
+ * Amount of audio in frames
+ *
+ * This is specified in
*/
- class SipMediaFormatItem extends SipConfigurationItem
- {
- /**
- * Name of the media format
- */
- string name;
-
- /**
- * Sample rate for frames
- *
- * This is specified in Hz and has a default value of 8000.
- */
- int sampleRate = 8000;
-
- /**
- * Amount of audio in frames
- *
- * This is specified in
- */
- int frameSize;
-
- /**
- * Any format specific parameters
- */
- Ice::StringSeq formatSpecific;
- };
+ int frameSize;
/**
- * User agent presentation configuration item
+ * Format specific attributes.
*/
- class SipUserAgentItem extends SipConfigurationItem
- {
- /**
- * String that our user agent should appear as
- */
- string userAgent;
- };
+ Ice::StringSeq formatSpecific;
+ };
- /**
- * Transport information configuration item
- */
- class SipEndpointTransportItem extends SipConfigurationItem
- {
- /**
- * What directions to require secure transport in
- */
- SipAllowableCallDirection secureTransport = Disabled;
- };
+ /**
+ * User agent presentation configuration item
+ */
+ class SipUserAgentItem extends SipConfigurationItem
+ {
+ /**
+ * String that our user agent should appear as
+ */
+ string userAgent;
+ };
+
+ /**
+ * Transport information configuration item
+ */
+ class SipEndpointTransportItem extends SipConfigurationItem
+ {
+ /**
+ * What directions to require secure transport in
+ */
+ SipAllowableCallDirection secureTransport = Disabled;
+ };
+
+ /**
+ * Group of configuration items related to a UDP transport
+ */
+ class SipUDPTransportGroup extends SipTransportGroup
+ {
+ };
- /**
- * Group of configuration items related to a UDP transport
- */
- ["visitor:SipConfigurationGroupVisitor"] class SipUDPTransportGroup extends SipTransportGroup
- {
- };
+ /**
+ * Group of configuration items related to a TCP transport
+ */
+ class SipTCPTransportGroup extends SipTransportGroup
+ {
+ };
- /**
- * Group of configuration items related to a TCP transport
- */
- ["visitor:SipConfigurationGroupVisitor"] class SipTCPTransportGroup extends SipTransportGroup
- {
- };
+ /**
+ * Group of configuration items related to a TLS transport
+ */
+ class SipTLSTransportGroup extends SipTransportGroup
+ {
+ };
- /**
- * Group of configuration items related to a TLS transport
- */
- ["visitor:SipConfigurationGroupVisitor"] class SipTLSTransportGroup extends SipTransportGroup
- {
- };
+ /**
+ * Group of configuration items related to a STUN enabled transport
+ */
+ class SipSTUNTransportGroup extends SipTransportGroup
+ {
+ };
}; /* module V1 */
diff --cc src/SipEndpoint.cpp
index a409cb3,624da0c..8014806
--- a/src/SipEndpoint.cpp
+++ b/src/SipEndpoint.cpp
@@@ -266,11 -290,22 +290,28 @@@ void SipEndpoint::setRTPOverIPv6(bool e
mImplPriv->mConfig.sessionConfig.rtpOverIPv6 = enabled;
}
++
+void SipEndpoint::setDirectMedia(bool enabled)
+{
+ mImplPriv->mConfig.sessionConfig.directMedia = enabled;
+}
+
+ void SipEndpoint::setMediaNATOptions(bool useICE, bool useTURN)
+ {
+ mImplPriv->mConfig.sessionConfig.rtpOverICE = useICE;
+ mImplPriv->mConfig.sessionConfig.rtpICEIncludeTURN = useTURN;
+ }
+
+ void SipEndpoint::setSRTPOptions(const SipEndpointMediaSRTPConfig& srtpConfig)
+ {
+ mImplPriv->mConfig.srtpConfig = srtpConfig;
+ }
+
+ void SipEndpoint::setSignalingNATOptions(bool enable)
+ {
+ mImplPriv->mConfig.transportConfig.enableNAT = enable;
+ }
+
void SipEndpoint::addFormat(const std::string& name, int sampleRate, int frameSize, const Ice::StringSeq& formatSpecific)
{
SDPDescriptorServiceLocatorParamsPtr params = new SDPDescriptorServiceLocatorParams();
diff --cc src/SipEndpoint.h
index 6d9ccc4,a0657d5..f462829
--- a/src/SipEndpoint.h
+++ b/src/SipEndpoint.h
@@@ -142,8 -157,37 +157,39 @@@ public
// Whether we are using IPv6 for media transport
// or not.
bool rtpOverIPv6;
+ // Whether we are allowing direct media or not
+ bool directMedia;
+ //
+ // Enables ICE transport.
+ //
+ bool rtpOverICE;
+ //
+ // Enables TURN as a viable mechanism for traversing NATs.
+ //
+ bool rtpICEIncludeTURN;
+
+ SipEndpointSessionConfig() :
+ rtpOverIPv6(false),
+ rtpOverICE(false),
+ rtpICEIncludeTURN(false)
+ {
+ }
+ };
+
+ class CryptoKey
+ {
+ public:
+ std::string suite;
+ std::string cryptoKey;
+ };
+ typedef std::vector<CryptoKey> CryptoKeys;
+
+ class SipEndpointMediaSRTPConfig
+ {
+ public:
+ bool enableAuthentication;
+ bool enableEncryption;
+ CryptoKeys cryptoKeys;
};
/**
@@@ -274,6 -330,9 +333,11 @@@ public
/**
* API call which returns the stream topology to be used for an SDP offer.
*/
++
+ void setMediaNATOptions(bool useICE, bool useTURN);
+ void setSRTPOptions(const SipEndpointMediaSRTPConfig& srtpConfig);
+ void setSignalingNATOptions(bool enable);
++
AsteriskSCF::Media::V1::StreamInformationDict getStreamTopology();
private:
diff --cc src/SipSession.cpp
index 637fd98,1e494f6..22810bf
mode 100644,100755..100755
--- a/src/SipSession.cpp
+++ b/src/SipSession.cpp
@@@ -221,9 -237,9 +237,9 @@@ public
pjsip_inv_session *mInviteSession;
/**
- * A dictionary of streams and their respective RTP session.
- * A vector of RTP media sessions belonging to this endpoint.
++ * A dictionary of RTP media sessions belonging to this endpoint.
*/
- RTPMediaSessionSeq mRTPSessions;
+ RTPMediaSessionDict mRTPSessions;
/**
* A vector of media sources associated with this endpoint.
@@@ -568,192 -586,10 +586,190 @@@ private
SipSessionPtr mSession;
};
+class CheckDirectConnectionsOperation : public SuspendableWork
+{
+public:
+ CheckDirectConnectionsOperation(
+ const AsteriskSCF::Media::V1::AMD_DirectMediaConnection_checkDirectConnectionsPtr& cb,
+ const AsteriskSCF::Media::V1::DirectMediaConnectionDict& connections,
+ const boost::shared_ptr<SipSessionPriv>& sessionPriv)
+ : mCb(cb), mConnections(connections), mImplPriv(sessionPriv) { }
-
++
+ SuspendableWorkResult execute(const SuspendableWorkListenerPtr&)
+ {
+ SipEndpointConfig &config = mImplPriv->mEndpoint->getConfig();
+
+ if (config.sessionConfig.directMedia == false)
+ {
+ mCb->ice_response(Ice::StringSeq());
+ return Complete;
+ }
+
+ Ice::StringSeq allowedStreams;
+
+ lg(Debug) << "Executing a checkDirectConnections Operation";
+
+ // Iterate through each requested connection checking if it is possible
+ for (AsteriskSCF::Media::V1::DirectMediaConnectionDict::const_iterator connection = mConnections.begin();
+ connection != mConnections.end();
+ ++connection)
+ {
+ // Do we have a local stream that matches this?
- StreamInformationDict::const_iterator stream = mImplPriv->mStreams.find(connection->first);
++ StreamInformationDict::const_iterator stream = mImplPriv->mStreams.find(connection->first);
+
+ // Uh, if they passed in a stream that we know nothing about skip it...
+ if (stream == mImplPriv->mStreams.end())
+ {
+ continue;
+ }
+
+ StreamSinkRTPPrx sink = StreamSinkRTPPrx::checkedCast(connection->second);
+
+ // If the provided sink is not an RTP one this connection is not possible
+ if (!sink)
+ {
+ continue;
+ }
+
+ std::string their_address = sink->getRemoteAddress();
+
- StreamSourceRTPPrx source = StreamSourceRTPPrx::uncheckedCast(stream->second->sources.front());
- std::string our_address = source->getLocalAddress();
++ StreamSourceRTPPrx source = StreamSourceRTPPrx::uncheckedCast(stream->second->sources.front());
++ std::string our_address = source->getLocalAddress();
+
+ // Is the address compatible with the address family on it?
- if ((our_address.find(":") == std::string::npos && their_address.find(":") != std::string::npos) ||
- (our_address.find(":") != std::string::npos && their_address.find(":") == std::string::npos))
- {
- continue;
- }
++ if ((our_address.find(":") == std::string::npos && their_address.find(":") != std::string::npos) ||
++ (our_address.find(":") != std::string::npos && their_address.find(":") == std::string::npos))
++ {
++ continue;
++ }
+
+ // It passed! We can establish a direct external media connection
+ allowedStreams.push_back(connection->first);
+ }
+
+ mCb->ice_response(allowedStreams);
+
+ return Complete;
+ }
+
+private:
+ AsteriskSCF::Media::V1::AMD_DirectMediaConnection_checkDirectConnectionsPtr mCb;
+ AsteriskSCF::Media::V1::DirectMediaConnectionDict mConnections;
- boost::shared_ptr<SipSessionPriv> mImplPriv;
++ boost::shared_ptr<SipSessionPriv> mImplPriv;
+};
+
-
+class ConnectStreamsOperation : public SuspendableWork
+{
+public:
+ ConnectStreamsOperation(
+ const AsteriskSCF::Media::V1::AMD_DirectMediaConnection_connectStreamsPtr& cb,
+ const AsteriskSCF::Media::V1::DirectMediaConnectionDict& connections,
+ const SipSessionPtr& session)
+ : mCb(cb), mConnections(connections), mSession(session) { }
+
+ SuspendableWorkResult execute(const SuspendableWorkListenerPtr&)
+ {
+ if (mSession->getInviteSession()->invite_tsx)
+ {
+ mSession->enqueueSessionWork(this);
+ return Complete;
+ }
+
+ pjmedia_sdp_session *sdp = mSession->modifySDP(mConnections);
+ pjsip_tx_data *packet = NULL;
+
+ if ((pjsip_inv_reinvite(mSession->getInviteSession(), NULL, sdp, &packet)) == PJ_SUCCESS)
+ {
+ pjsip_inv_send_msg(mSession->getInviteSession(), packet);
+ }
+
+ mCb->ice_response();
+
+ return Complete;
+ }
+
+private:
+ AsteriskSCF::Media::V1::AMD_DirectMediaConnection_connectStreamsPtr mCb;
+ AsteriskSCF::Media::V1::DirectMediaConnectionDict mConnections;
+ const SipSessionPtr mSession;
+};
+
+class DisconnectStreamsOperation : public SuspendableWork
+{
+public:
+ DisconnectStreamsOperation(
+ const AsteriskSCF::Media::V1::AMD_DirectMediaConnection_disconnectStreamsPtr& cb,
+ const Ice::StringSeq& streams,
+ const SipSessionPtr& session)
+ : mCb(cb), mStreams(streams), mSession(session) { }
+
+ SuspendableWorkResult execute(const SuspendableWorkListenerPtr&)
+ {
+ pjmedia_sdp_session *sdp = mSession->modifySDP(mStreams);
+ pjsip_tx_data *packet = NULL;
+
+ if ((pjsip_inv_reinvite(mSession->getInviteSession(), NULL, sdp, &packet)) == PJ_SUCCESS)
+ {
+ pjsip_inv_send_msg(mSession->getInviteSession(), packet);
+ }
+
+ mCb->ice_response();
+
+ return Complete;
+ }
+
+private:
+ AsteriskSCF::Media::V1::AMD_DirectMediaConnection_disconnectStreamsPtr mCb;
+ Ice::StringSeq mStreams;
+ const SipSessionPtr mSession;
+};
+
+/**
+ * Implementation of a DirectMediaConnection interface for the SipSession.
+ */
+class SipDirectMediaConnection : public AsteriskSCF::Media::V1::DirectMediaConnection
+{
+public:
+ SipDirectMediaConnection(boost::shared_ptr<SipSessionPriv> implPriv, const SipSessionPtr& session) :
+ mImplPriv(implPriv), mSession(session) { }
+
+ void checkDirectConnections_async(const AsteriskSCF::Media::V1::AMD_DirectMediaConnection_checkDirectConnectionsPtr& cb,
+ const AsteriskSCF::Media::V1::DirectMediaConnectionDict& connections, const Ice::Current&)
+ {
+ lg(Debug) << "Queueing checkDirectConnections operation";
+ mSession->enqueueSessionWork(new CheckDirectConnectionsOperation(cb, connections, mImplPriv));
+ }
+
+ void connectStreams_async(const AsteriskSCF::Media::V1::AMD_DirectMediaConnection_connectStreamsPtr& cb,
+ const AsteriskSCF::Media::V1::DirectMediaConnectionDict& connections, const Ice::Current&)
+ {
+ lg(Debug) << "Queueing connectStreams operation";
+ mSession->enqueueSessionWork(new ConnectStreamsOperation(cb, connections, mSession));
+ }
+
+ void disconnectStreams_async(const AsteriskSCF::Media::V1::AMD_DirectMediaConnection_disconnectStreamsPtr& cb,
+ const Ice::StringSeq& streams, const Ice::Current&)
+ {
+ lg(Debug) << "Queueing disconnectStreams operation";
+ mSession->enqueueSessionWork(new DisconnectStreamsOperation(cb, streams, mSession));
+ }
+
+private:
+ /**
+ * Private implementation details for SipSession.
+ */
+ boost::shared_ptr<SipSessionPriv> mImplPriv;
+
+ /**
+ * A pointer to the communications session that created us.
+ */
+ SipSessionPtr mSession;
+};
+
void SipSession::initializePJSIPStructs()
{
- pj_str_t local_uri, remote_uri;
- SipEndpointConfig &config = mImplPriv->mEndpoint->getConfig();
-
+ SipEndpointConfig& config = mImplPriv->mEndpoint->getConfig();
+
std::string prefix;
if (config.transportConfig.secureTransport == OUTBOUND || config.transportConfig.secureTransport == BOTH)
{
@@@ -851,16 -782,15 +965,15 @@@ SipSession::SipSession(const Ice::Objec
* Replica constructor.
*/
SipSession::SipSession(const Ice::ObjectAdapterPtr& adapter, const SipEndpointPtr& endpoint,
- const std::string& destination, const Ice::Identity& /* sessionid */,
+ const std::string& destination, const Ice::Identity& sessionid,
const Ice::Identity& controllerid,
- const Ice::Identity& mediaid, const AsteriskSCF::Replication::SipSessionManager::V1::RTPMediaSessionSeq& mediasessions,
+ const Ice::Identity& mediaid, const AsteriskSCF::Replication::SipSessionManager::V1::RTPMediaSessionDict& mediasessions,
const AsteriskSCF::Media::V1::StreamSourceSeq& sources, const AsteriskSCF::Media::V1::StreamSinkSeq& sinks,
- PJSipManager *manager, const AsteriskSCF::Core::Discovery::V1::ServiceLocatorPrx& serviceLocator,
- const AsteriskSCF::System::Component::V1::ReplicaPtr& replica, bool isUAC)
- : mImplPriv(new SipSessionPriv(adapter, endpoint, destination, manager, serviceLocator, replica))
+ const PJSipManagerPtr& manager, const AsteriskSCF::Core::Discovery::V1::ServiceLocatorPrx& serviceLocator,
+ const AsteriskSCF::System::Component::V1::ReplicaPtr& replica, bool isUAC, const NATEndpointOptions& natOptions)
+ : mImplPriv(new SipSessionPriv(adapter, endpoint, destination, manager, serviceLocator, replica, natOptions))
{
- mImplPriv->mSessionProxy =
- AsteriskSCF::SessionCommunications::V1::SessionPrx::uncheckedCast(adapter->add(this, sessionid));
+ activateIceObjects(mImplPriv->mManager->getSessionModule()->getSessionCreationHooks());
mImplPriv->mMediaSession = new SipMediaSession(this);
mImplPriv->mMediaSessionProxy =
@@@ -1862,7 -1883,7 +2069,7 @@@ pjmedia_sdp_session *SipSession::create
stream->second->sources.push_back(source);
// Update the SIP session with some RTP session details
- mImplPriv->mRTPSessions.insert(make_pair(boost::lexical_cast<std::string>(mImplPriv->mSDP->media_count), session));
- mImplPriv->mRTPSessions.push_back(session);
++ mImplPriv->mRTPSessions.insert(make_pair(boost::lexical_cast<std::string>(mImplPriv->mSDP->media_count), session));
// Add the stream to the SDP
pjmedia_sdp_media *media = allocate_from_pool<pjmedia_sdp_media>(mImplPriv->mDialog->pool);
@@@ -2148,7 -2193,7 +2379,7 @@@ pjmedia_sdp_session *SipSession::create
ourStream->sources.push_back(source);
// Update the SIP session with some RTP session details
- mImplPriv->mRTPSessions.insert(make_pair(boost::lexical_cast<std::string>(stream), session));
- mImplPriv->mRTPSessions.push_back(session);
++ mImplPriv->mRTPSessions.insert(make_pair(boost::lexical_cast<std::string>(stream), session));
// Just by common sense alone since we just got an RTP session for this stream we obviously
// have not added it to the answer SDP either, so do it
@@@ -2255,7 -2327,7 +2513,7 @@@
}
/**
- * Internal function which modifies our SDP to remove streams.
- * Internal function which modifies our SDP.
++ * Internal function which modifies our SDP to contain remote destination and format details.
*/
pjmedia_sdp_session *SipSession::modifySDP(const AsteriskSCF::Media::V1::StreamInformationDict& toRemove)
{
@@@ -2302,91 -2374,6 +2560,91 @@@
}
/**
+ * Internal function which modifies our SDP to contain remote destination and format details.
+ */
+pjmedia_sdp_session *SipSession::modifySDP(const AsteriskSCF::Media::V1::DirectMediaConnectionDict& connections)
+{
+ // In order to modify SDP you have to have SDP
+ if (!mImplPriv->mSDP)
+ {
+ return 0;
+ }
+
+ // Iterate through each connection request
+ for (AsteriskSCF::Media::V1::DirectMediaConnectionDict::const_iterator connection = connections.begin();
- connection != connections.end();
- ++connection)
++ connection != connections.end();
++ ++connection)
+ {
- pjmedia_sdp_media *media = mImplPriv->mSDP->media[boost::lexical_cast<int>(connection->first)];
++ pjmedia_sdp_media *media = mImplPriv->mSDP->media[boost::lexical_cast<int>(connection->first)];
+
+ // Skip unknown streams
+ if (!media)
+ {
+ continue;
+ }
+
- StreamSinkRTPPrx sink = StreamSinkRTPPrx::uncheckedCast(connection->second);
++ StreamSinkRTPPrx sink = StreamSinkRTPPrx::uncheckedCast(connection->second);
+
- // Update connection details on the stream
- pj_strdup2(mImplPriv->mDialog->pool, &media->conn->addr, sink->getRemoteAddress().c_str());
- media->desc.port = (pj_uint16_t) sink->getRemotePort();
++ // Update connection details on the stream
++ pj_strdup2(mImplPriv->mDialog->pool, &media->conn->addr, sink->getRemoteAddress().c_str());
++ media->desc.port = (pj_uint16_t) sink->getRemotePort();
+
- // Drop all existing formats and attributes by changing the counts to zero, this is fine since the SDP generator
- // uses the count to determine how far to go
- media->desc.fmt_count = 0;
- media->attr_count = 0;
++ // Drop all existing formats and attributes by changing the counts to zero, this is fine since the SDP generator
++ // uses the count to determine how far to go
++ media->desc.fmt_count = 0;
++ media->attr_count = 0;
+
- // Add formats present on the sink, this is fine to do because an SDP descriptor will only be found for ones
- // which are naturally configured on this endpoint
- PayloadMap payloads;
- addFormatstoSDP(sink->getFormats(), media, payloads);
++ // Add formats present on the sink, this is fine to do because an SDP descriptor will only be found for ones
++ // which are naturally configured on this endpoint
++ PayloadMap payloads;
++ addFormatstoSDP(sink->getFormats(), media, payloads);
+ }
-
++
+ return mImplPriv->mSDP;
+}
+
+/**
+ * Internal function which modifies our SDP to contain our local destination details and formats.
+ */
+pjmedia_sdp_session *SipSession::modifySDP(const Ice::StringSeq& streams)
+{
+ // In order to modify SDP you have to have SDP
+ if (!mImplPriv->mSDP)
+ {
+ return 0;
+ }
+
+ // Iterate through each stream
+ for (Ice::StringSeq::const_iterator stream = streams.begin();
+ stream != streams.end();
+ ++stream)
+ {
+ StreamInformationDict::const_iterator ourStream = mImplPriv->mStreams.find((*stream));
+
+ // Ignore streams that we don't know about
+ if (ourStream == mImplPriv->mStreams.end())
+ {
+ continue;
+ }
+
+ // These *will* exist and be true due to implementation
+ pjmedia_sdp_media *media = mImplPriv->mSDP->media[boost::lexical_cast<int>((*stream))];
+ StreamSourceRTPPrx source = StreamSourceRTPPrx::uncheckedCast(ourStream->second->sources.front());
+
+ pj_strdup2(mImplPriv->mDialog->pool, &media->conn->addr, source->getLocalAddress().c_str());
+ media->desc.port = (pj_uint16_t) source->getLocalPort();
+
+ media->desc.fmt_count = 0;
+ media->attr_count = 0;
+
+ PayloadMap payloads;
+ addFormatstoSDP(ourStream->second->formats, media, payloads);
+ }
+
+ return mImplPriv->mSDP;
+}
+
+/**
* Internal function which sets the PJsip dialog.
*/
void SipSession::setDialog(pjsip_dialog *dialog)
diff --cc src/SipSession.h
index 3fd0f4e,fa89ad0..f52619d
--- a/src/SipSession.h
+++ b/src/SipSession.h
@@@ -95,18 -106,17 +106,17 @@@ class SipSession : public AsteriskSCF::
{
public:
SipSession(const Ice::ObjectAdapterPtr&, const SipEndpointPtr&, const std::string&,
- const AsteriskSCF::SessionCommunications::V1::SessionListenerPrx&, PJSipManager *manager,
+ const AsteriskSCF::SessionCommunications::V1::SessionListenerPrx&, const PJSipManagerPtr& manager,
const AsteriskSCF::Core::Discovery::V1::ServiceLocatorPrx& serviceLocator,
const AsteriskSCF::System::Component::V1::ReplicaPtr& replica,
- bool isUAC);
+ bool ipv6, bool isUAC, const NATEndpointOptions& natOptions);
- SipSession(const Ice::ObjectAdapterPtr&, const SipEndpointPtr&, const std::string&, const Ice::Identity&,
- const Ice::Identity&,
- const Ice::Identity&, const AsteriskSCF::Replication::SipSessionManager::V1::RTPMediaSessionDict&,
- const AsteriskSCF::Media::V1::StreamSourceSeq&, const AsteriskSCF::Media::V1::StreamSinkSeq&,
- PJSipManager *manager, const AsteriskSCF::Core::Discovery::V1::ServiceLocatorPrx& serviceLocator,
- const AsteriskSCF::System::Component::V1::ReplicaPtr& replica,
- bool isUAC);
+ SipSession(const Ice::ObjectAdapterPtr&, const SipEndpointPtr&, const std::string&, const Ice::Identity&, const Ice::Identity&,
- const Ice::Identity&, const AsteriskSCF::Replication::SipSessionManager::V1::RTPMediaSessionSeq&,
++ const Ice::Identity&, const AsteriskSCF::Replication::SipSessionManager::V1::RTPMediaSessionDict&,
+ const AsteriskSCF::Media::V1::StreamSourceSeq&, const AsteriskSCF::Media::V1::StreamSinkSeq&,
+ const PJSipManagerPtr& manager, const AsteriskSCF::Core::Discovery::V1::ServiceLocatorPrx& serviceLocator,
+ const AsteriskSCF::System::Component::V1::ReplicaPtr& replica,
+ bool isUAC, const NATEndpointOptions& natOptions);
bool operator==(const SipSession &other) const;
commit f738f0c7b03d342bae114b88c46fc0a70d22e5ec
Merge: 753d3c7 9404329
Author: Mark Michelson <mmichelson at digium.com>
Date: Tue Aug 2 11:34:19 2011 -0500
Merge branch 'telephone-events'
Conflicts:
slice/AsteriskSCF/Configuration/SipSessionManager/SipConfigurationIf.ice
src/PJSipSessionModule.cpp
src/PJSipSessionModule.h
src/SipConfiguration.cpp
src/SipEndpoint.cpp
src/SipEndpoint.h
src/SipSession.cpp
src/SipSession.h
diff --cc slice/AsteriskSCF/Configuration/SipSessionManager/SipConfigurationIf.ice
index 715e039,e2a477f..9cdafe8
--- a/slice/AsteriskSCF/Configuration/SipSessionManager/SipConfigurationIf.ice
+++ b/slice/AsteriskSCF/Configuration/SipSessionManager/SipConfigurationIf.ice
@@@ -32,458 -32,426 +32,476 @@@ module SipSessionManage
["suppress"]
module V1
{
- /**
- * Service locator category for finding the configuration service
- */
- const string ConfigurationDiscoveryCategory = "SipConfiguration";
- /**
- * Service locator parameters class for discovering the configuration service
- */
- unsliceable class SipConfigurationParams extends AsteriskSCF::Core::Discovery::V1::ServiceLocatorParams
- {
- /**
- * Unique name for the configuration service
- */
- string name;
- };
+/**
+ * Service locator category for finding the configuration service
+ */
+const string ConfigurationDiscoveryCategory = "SipConfiguration";
- /**
- * Local visitor class for visiting SIP configuration groups
- */
- local class SipConfigurationGroupVisitor extends AsteriskSCF::System::Configuration::V1::ConfigurationGroupVisitor
- {
- };
+/**
+ * Service locator parameters class for discovering the configuration service
+ */
+unsliceable class SipConfigurationParams extends AsteriskSCF::Core::Discovery::V1::ServiceLocatorParams
+{
+ /**
+ * Unique name for the configuration service
+ */
+ string name;
+};
- /**
- * Generic SIP configuration group
- */
- ["visitor:SipConfigurationGroupVisitor"] class SipConfigurationGroup extends AsteriskSCF::System::Configuration::V1::ConfigurationGroup
- {
- };
+/**
+ * Local visitor class for visiting SIP configuration groups
+ */
+local class SipConfigurationGroupVisitor extends AsteriskSCF::System::Configuration::V1::ConfigurationGroupVisitor
+{
+};
- /**
- * General SIP configuration group that contains general items related to the SIP component as a whole
- */
- class SipGeneralGroup extends SipConfigurationGroup
- {
- };
+/**
+ * Generic SIP configuration group
+ */
+["visitor:SipConfigurationGroupVisitor"] class SipConfigurationGroup extends AsteriskSCF::System::Configuration::V1::ConfigurationGroup
+{
+};
- /**
- * Local visitor class for visiting SIP configuration items
- */
- local class SipConfigurationItemVisitor extends AsteriskSCF::System::Configuration::V1::ConfigurationItemVisitor
- {
- };
+/**
+ * General SIP configuration group that contains general items related to the SIP component as a whole
+ */
+class SipGeneralGroup extends SipConfigurationGroup
+{
+};
- /**
- * Generic SIP configuration item
- */
- ["visitor:SipConfigurationItemVisitor"] class SipConfigurationItem extends AsteriskSCF::System::Configuration::V1::ConfigurationItem
- {
- };
+/**
+ * Local visitor class for visiting SIP configuration items
+ */
+local class SipConfigurationItemVisitor extends AsteriskSCF::System::Configuration::V1::ConfigurationItemVisitor
+{
+};
- /**
- * SIP Endpoint group, used to configure an endpoint
- */
- class SipEndpointGroup extends SipConfigurationGroup
- {
- /**
- * Name of the endpoint being configured
- */
- string name;
- };
+/**
+ * Generic SIP configuration item
+ */
+["visitor:SipConfigurationItemVisitor"] class SipConfigurationItem extends AsteriskSCF::System::Configuration::V1::ConfigurationItem
+{
+};
- /**
- * SIP Domain group, used to configure a specific domain
- */
- class SipDomainGroup extends SipConfigurationGroup
- {
- /**
- * Name of the domain being configured
- */
- string domain;
- };
+/**
+ * SIP Endpoint group, used to configure an endpoint
+ */
+class SipEndpointGroup extends SipConfigurationGroup
+{
+ /**
+ * Name of the endpoint being configured
+ */
+ string name;
+};
- /**
- * Domain item for bindings
- */
- class SipBindingsItem extends SipConfigurationItem
- {
- /**
- * Addresses the domain is reachable over
- */
- Ice::StringSeq bindings;
- };
+/**
+ * SIP Domain group, used to configure a specific domain
+ */
+class SipDomainGroup extends SipConfigurationGroup
+{
+ /**
+ * Name of the domain being configured
+ */
+ string domain;
+};
- /**
- * Generic SIP transport group that others derive from, primarily created since each one has
- * the requirement of a name
- */
- class SipTransportGroup extends SipConfigurationGroup
- {
- /**
- * Name of the specific transport. Since each one may have multiple transports this differentiates
- * them.
- */
... 4223 lines suppressed ...
--
asterisk-scf/integration/sip.git
More information about the asterisk-scf-commits
mailing list