Commit Graph

2318 Commits

Author SHA1 Message Date
kapil 6b542763d9 Merge branch 'nsg-4.3' of ssh://git.sangoma.com/smg_freeswitch into nsg-4.3
Conflicts:
	libs/freetdm/src/ftmod/ftmod_sangoma_ss7/ftmod_sangoma_ss7_cli.c
2012-06-14 15:45:51 +05:30
kapil 69197b1d0c fixing cli issues 2012-06-14 15:40:57 +05:30
David Yat Sin 2112375e07 re-adjusted parameter names 2012-06-12 20:19:37 -04:00
David Yat Sin 143fb61bdb re-adjusted parameter names 2012-06-12 20:12:27 -04:00
David Yat Sin feaadd2f43 re-adjusted parameter names 2012-06-12 19:29:07 -04:00
David Yat Sin 055dc8bc4b re-adjusted parameter names 2012-06-12 19:15:14 -04:00
David Yat Sin 8880793174 Removed include for switch_utils.h 2012-06-12 18:47:53 -04:00
David Yat Sin ba17ae3f10 Fix for compile warnings 2012-06-12 18:32:58 -04:00
David Yat Sin bdaead271d Fix for compile warnings 2012-06-12 18:18:14 -04:00
David Yat Sin b22a4b566a Fix for some compile warnings 2012-06-12 18:07:42 -04:00
kapil 58dc659fbb adding code based on modified xml and cli code changes (rename the m2ua cli command to
"xmlshow" and adding cli code to show sctp state also in m2ua peerstatus command)
2012-06-12 18:43:01 +05:30
David Yat Sin 91f9374a9f Added code to treat sngss7_config section (same as sng_isup) 2012-06-11 13:23:37 -04:00
kapil 8102c1603c adding src/peer port into xml config 2012-06-11 18:45:56 +05:30
kapil 69bada7025 removign sctp/peer id from <m2ua_interface> config xml block 2012-06-11 12:43:08 +05:30
kapil e4bd524b7d adding peerstatus and logging enable/disable CLI command 2012-06-05 21:33:13 +05:30
kapil 2b5875a258 adding M2UA/NIF CLI commands 2012-06-05 17:12:16 +05:30
kapil 117cbc1bf5 adding SCTP status CLI command 2012-06-04 22:52:26 +05:30
kapil a3995ad16e Merge branch 'nsg-4.3' of ssh://git.sangoma.com/smg_freeswitch into nsg-4.3 2012-05-30 20:22:08 +05:30
kapil f1f78a8653 adding m2ua stack free code while unloading freetdm module 2012-05-30 20:20:58 +05:30
Kapil 889a0be2b3 issue fix 2012-05-30 16:41:31 +05:30
kapil 69501d091c adding M2UA configuration/alarm handling code 2012-05-30 12:31:25 +05:30
kapil d3c8429af9 Merge branch 'nsg-4.3' of ssh://git.sangoma.com/smg_freeswitch into nsg-4.3 2012-05-30 07:47:07 +05:30
kapil 076d9fbe67 M2UA xml configuration parsing code 2012-05-30 07:45:59 +05:30
Kapil a941cad15d adding M2UA SG open endpoint request code 2012-05-29 15:06:25 +05:30
kapil 4a99dc7fc7 added code to ftdm_sangoma_ss7_run api to avoid code execution for M2UA
SG
2012-05-18 12:24:27 +05:30
kapil 23ca7f8fed adding m2ua stack config/control code 2012-05-18 12:05:25 +05:30
David Yat Sin 67c43a0759 Initial commit 2012-05-04 18:42:59 -04:00
David Yat Sin 5226489c39 Merge branch 'releases.3.4' into releases.3.5
Conflicts:
	libs/freetdm/mod_freetdm/mod_freetdm.c
	libs/freetdm/src/ftdm_state.c
	libs/freetdm/src/ftmod/ftmod_sangoma_ss7/ftmod_sangoma_ss7_handle.c
	libs/freetdm/src/ftmod/ftmod_sangoma_ss7/ftmod_sangoma_ss7_main.c
	libs/freetdm/src/ftmod/ftmod_sangoma_ss7/ftmod_sangoma_ss7_main.h
	libs/freetdm/src/ftmod/ftmod_sangoma_ss7/ftmod_sangoma_ss7_out.c
	libs/freetdm/src/ftmod/ftmod_sangoma_ss7/ftmod_sangoma_ss7_xml.c
2012-04-26 16:13:26 -04:00
James Zhang 4f5a6557fc freetdm: fix queue full problem
- restore flushing queue when channel state goes to down
2012-04-18 10:52:01 -04:00
James Zhang e2f1b4ab27 freetdm: fix REL receiving leg always stay in TERMINATING stae in
native bridge mode
         - This is supposed to be included in commit of
           b324f86797. Somehow it's
           not included in that commit. Without this change, the
           REL receiving leg always stay in TERMINATING state when
           received an incoming REL message.
2012-04-16 13:48:35 -04:00
James cd2d67ace1 freetdm: fixed group block/unblock state dead lock when signal link
is down and recovered later
         To re-produce this bug:
             1. do CGB on one side
             2. unplug signaling link cable
             3. plug signaling link cable back
             4. do CGU on the blocking side
             5. cic state stay in RESTART for ever
         Fix this problem by sending cic to SUSPENDED state after
         receiving/sending CGU message
2012-04-13 17:26:48 -04:00
James Zhang a796c6849c freetdm: fixed no ACM/CPG sending in some situations after native bridge
- clear up ACM_SENT & CPG_SENT flag in DOWN state in native
           bridge state machine
2012-04-13 11:18:53 -04:00
James Zhang 8d1c382632 freetdm: INR/INF implementation
- fill in IEs in INF according to INR request
         - print debug information if IE requested but not supported
2012-04-11 15:14:29 -04:00
James Zhang 16d4f1f063 freetdm: INR/INF implementation
- When NSG receives INR from network, send back INF with calling
         party category information IE and calling number information IE.
         - Introduced a new global setting of "force-inr" for testing
         purpose. Stinga generated INR/INF packets are not acceptable by
         trillium stack since it misses call related information in the
         packets. If configure force-inr to true in freetdm.conf.xml, when
         NSG receives an incoming IAM, it'll send out INR packet regardless
         of incoming IAM's IEs, and keep waiting for INF response from the
         calling side.
         - T.39 timer is introduced in order to handle INR timeout. The
         default value of T.39 is 12 seconds and is configurable according
         to spec.
         - Only supports calling number IE and calling party category IE in
         current fix. The customer only needs the calling number IE right now.
         In ISUP spec, there are 6 optional IEs. NSG only supports calling
         party number and calling category information IE since the other
         IEs are not configurable in freetdm.conf.xml or included in IAM
         message.
         - In collect state, INR/INF implementation needs to work with existed
         SAM messages. If NSG sent out INR and wait for SAM, collect state
         check both INF received and enough dialed numbers received. If one
         of these conditions are not met, it'll stay in collect state and wait
         until either conditions met or timeout. After received INF and enough
         dailed number, state moves to dailing and proceed as regular calls.
2012-04-11 11:20:32 -04:00
David Yat Sin e3369119e0 Merge branch 'master' into releases.3.5 2012-04-03 18:16:36 -04:00
David Yat Sin 27e4cdb4dd Merge branch 'fsorig'
Conflicts:
	libs/freetdm/src/ftmod/ftmod_sangoma_isdn/ftmod_sangoma_isdn_stack_cfg.c
	libs/freetdm/src/ftmod/ftmod_sangoma_isdn/ftmod_sangoma_isdn_stack_hndl.c
2012-04-03 18:08:49 -04:00
David Yat Sin be4512be03 FreeTDM - ISDN fix for BRI lines with Q.921 layer going idle 2012-04-03 16:48:14 -04:00
James Zhang 339c45b2cb freetdm: Add documentation for SS7 native bridge 2012-04-03 11:27:25 -04:00
James Zhang b324f86797 freetdm: Clean up SS7 native bridge code to separate the call control, queuing and
resource-cleanup responsibilities clearly between the 2 channels involved in the bridge

   - Each channel is responsible for clearning its own peer_data and event queue
     at the end of the call (when moving to DOWN state)

   - Each channel dequeues messages only from its own queue and enqueues messages
     in the peer's queue, with the only exception being messages received before
     the bridge is stablished (IAM for sure and possible SAM messages) because
     if the bridge is not yet stablished the messages must be queued by the channel
     in its own queue temporarily until the bridge is ready

   - When the bridge is ready it is the responsibility of the incoming channel to
     move the messages that stored temporarily in its own queue to the bridged peer queue

   - During hangup, each channel is responsible for moving itself to DOWN. The procedure
     however differs slightly depending on the hangup conditions

     If the user requests hangup (ie, FreeSWITCH) the request will be noted by setting the
     FTDM_CHANNEL_USER_HANGUP flag but will not be processed yet because call control is
     driven only by the link messages (so no hangup from ESL or command line allowed)

     When REL message comes, the channel receiving it must move to TERMINATING state and:

           - If the user has not hangup yet (FTDM_CHANNEL_USER_HANGUP flag not set) then
             notify the user via SIGEVENT_STOP and wait for the user to move to HANGUP
             state by calling ftdm_channel_call_hangup() before sending RLC

           - If the user did hangup already (FTDM_CHANNEL_USER_HANGUP flag is set) then
             skip user notification and move to HANGUP state directly where the RLC message
             will be sent

   - On HANGUP state the RLC is sent and the channel is moved to DOWN, final state
     The peer channel will forward the REL message and wait for RLC from the network, when
     RLC is received the channel can move straight to DOWN itself because the peer channel
     is completing its own shutdown procedure when it received the REL message
2012-04-03 11:23:49 -04:00
David Yat Sin d730df77e4 Merge branch 'master' of ssh://git.freeswitch.org:222/freeswitch 2012-04-02 18:00:38 -04:00
David Yat Sin 38143e3035 freetdm - ISDN added check to treat calling number 0000000000 as empty calling number 2012-04-02 18:00:27 -04:00
Anthony Minessale 647740e9a4 cleanup after yourself 2012-04-02 16:20:40 -05:00
Anthony Minessale afdf50d423 stop sched thread quicker on global destroy 2012-04-02 15:33:45 -05:00
Anthony Minessale 972504a3ca unset logger on global destroy 2012-04-02 15:00:35 -05:00
James Zhang 8a589435de freetdm: Adding condition to parse sip headers only for non-freetdm channels.
This fixes an issue where ss7 native bridge was accidentally enabled
         any time two freetdm channels were bridged regardless of the freetdm_native_sigbridge
         variable value.
2012-03-30 16:50:00 -04:00
Stefan Knoblich a856d81a06 ftmod_misdn: More reworking of b-channel audio tx handling.
Use the amount of audio data received in misdn_read() to determine how many
bytes we need to send to the b-channel (= how much free space is left
in the b-channel tx queue). (This is how libosmo-abis and LCR handle it too.)

A pipe is used as a poll()-able audio tx buffer (filled in misdn_write()):
FTDM_WRITE wait requests are currently poll()-ed on the input side of the pipe,
whereas FTDM_READ and _EVENT requests are poll()-ed on the b-channel socket itself.

For every N-bytes of audio data read from the b-channel in misdn_read(),
we try to get as much out of the tx pipe, convert it into the ISDN_P_B_RAW
format and send it to the b-channel socket.

If there's less than N-bytes left in the pipe, we fill the remaining buffer
with silence to avoid buffer underflows.

B-Channel handling overview:

  - misdn_wait(FTDM_WRITE) on audio pipe

  - misdn_write() put audio data into pipe

  - misdn_wait(FTDM_READ) for next incoming mISDN
    message on b-channel socket

  - misdn_read() handle mISDN event, for PH_DATA_IND:

      - Write data into channel buffer and convert
        to a/u-law using misdn_convert_audio_bits()

      - Try to fetch N-bytes from audio pipe

      - If not enough bytes in pipe: fill remaining space with silence

      - Convert audio to raw format

      - Send to b-channel (PH_DATA_REQ)

Known problems / bugs / further investigation:

   1. Bridge aborted by "Write Buffer 0 bytes Failed!" error from switch_core_io.c.
      This is "fixed" by _not_ setting the b-channel sockfd to non-blocking mode.

   2. Audio glitches (maybe caused by FTDM_WRITE misdn_wait() handling or blocking I/O on sockfd?)

   3. misdn_read() EBUSY error messages from sending data to b-channel sockfd after enabling channel.

Signed-off-by: Stefan Knoblich <stkn@openisdn.net>
2012-03-28 23:49:55 +02:00
James Zhang a2db3c24b3 freetdm: fixing more potential null pointers in native bridge mode. 2012-03-27 18:00:24 -04:00
Stefan Knoblich e3698c2067 ftmod_misdn: Make sure misdn_read() doesn't loop forever and improve logging etc.
Signed-off-by: Stefan Knoblich <stkn@openisdn.net>
2012-03-23 01:21:55 +01:00
Stefan Knoblich ff4b395956 ftmod_misdn: Rework channel de-/activation and activate d-channel early.
The former fixes a strange "bug" with hfcsusb, where a b-channel deactivation
on a inactive channel (caused by a reset cycle) would cause the port to
lock up and stop processing events.

NOTE: this still needs to be investigated further, but this workaround will
      at least prevent it from breaking completely.

We'll now keep track of the channel activation state and not send any
PH_ACTIVATE_REQ / PH_DEACTIVATE_REQ requests, if the channel already has the
desired state.

Signed-off-by: Stefan Knoblich <stkn@openisdn.net>
2012-03-23 01:21:55 +01:00
Stefan Knoblich a2f3ef7460 ftmod_misdn: Reserve some space for the mISDN message header in misdn_write().
Signed-off-by: Stefan Knoblich <stkn@openisdn.net>
2012-03-23 01:21:55 +01:00