Hi,
for ipaccess based BTS, like osmo-bts, we don't really care about the
scenario you mention since the BTS is expected to lock the transceiver
and reset state whenever it detects the underlaying tcp/ipa connections
is closed, so that next time it re-conencts to BSC it should be in a
"safe" state.
As per E1 BTS, I was not even aware of such a feature/requirement.
I did a quick investigation. Shutdown in essence happens through
signal_handler(), which will essentially do:
1- "bsc_shutdown_net(bsc_gsmnet);" sends signal S_GLOBAL_BTS_CLOSE_OM to
each BTS, which is case of nokia calls shutdown_om() which should do
whatever you want there.
2 - "osmo_signal_dispatch(SS_L_GLOBAL, S_L_GLOBAL_SHUTDOWN, NULL);" This
actually does nothing afaiu because osmo-bsc nor libosmocore do any
handling of this signal.
3- osmo_select_shutdown_request() This tells libosmocore main loop that
we desire to shutdown. main() in osmo-bsc_main.c iterates on the
mainloop based on condition osmo_select_shutdown_done().
Now, let's look further at point 3, see libosmocore select.c. Calling
osmo_select_shutdown_request() (read the documentation on top of it)
sets _osmo_select_shutdown_requested global
variable.osmo_select_shutdown_done() checks _osmo_select_shutdown_done
global variable.
The logic for those variables is enclosed in poll_disp_fds(), one would
probably need to debug over there after you send CTRL+C to figure out
why isn't the message being sent.
Regards,
Pau
--
- Pau Espin Pedrol <pespin(a)sysmocom.de>
http://www.sysmocom.de/
=======================================================================
* sysmocom - systems for mobile communications GmbH
* Siemensstr. 26a
* 10551 Berlin, Germany
* Sitz / Registered office: Berlin, HRB 134158 B
* Geschaeftsfuehrer / Managing Director: Harald Welte