diff options
author | Pau Espin Pedrol <pespin@sysmocom.de> | 2022-09-16 20:12:35 +0200 |
---|---|---|
committer | pespin <pespin@sysmocom.de> | 2022-09-19 14:07:31 +0000 |
commit | 79701ebd25bcfbafe719be906f943bd9bc2c63ae (patch) | |
tree | 78a845d5ac50b45b5065ed205185f8a5b9f7fcc8 | |
parent | 13a58385a482a91491dcb97039ca9110aaf9d201 (diff) |
ipaccess-config: Exit program with error if OML link is dropped
Change-Id: Ic96635f618f2efbe29ca6c59eedd1dc1f90c1a1d
-rw-r--r-- | src/ipaccess/ipaccess-config.c | 27 |
1 files changed, 27 insertions, 0 deletions
diff --git a/src/ipaccess/ipaccess-config.c b/src/ipaccess/ipaccess-config.c index d1fbed704..a22d31138 100644 --- a/src/ipaccess/ipaccess-config.c +++ b/src/ipaccess/ipaccess-config.c @@ -403,6 +403,32 @@ static int nm_sig_cb(unsigned int subsys, unsigned int signal, return 0; } +/* Callback function to be called every time we receive a signal from INPUT */ +static int inp_sig_cb(unsigned int subsys, unsigned int signal, + void *handler_data, void *signal_data) +{ + struct input_signal_data *isd = signal_data; + + if (subsys != SS_L_INPUT) + return -EINVAL; + + fprintf(stderr, "%s(): Input signal '%s' received\n", __func__, + get_value_string(e1inp_signal_names, signal)); + + switch (signal) { + case S_L_INP_TEI_UP: + break; + case S_L_INP_TEI_DN: + fprintf(stderr, "Lost E1 %s link\n", e1inp_signtype_name(isd->link_type)); + exit(1); + break; + default: + break; + } + + return 0; +} + /* callback function passed to the ABIS OML code */ static int percent; static int percent_old; @@ -1168,6 +1194,7 @@ int main(int argc, char **argv) bts->oml_tei = stream_id; osmo_signal_register_handler(SS_NM, nm_sig_cb, NULL); + osmo_signal_register_handler(SS_L_INPUT, inp_sig_cb, NULL); osmo_signal_register_handler(SS_IPAC_NWL, nwl_sig_cb, NULL); ipac_nwl_init(); |