From 086ffa51b4f56eb875e4918a2ee1802581c6cd67 Mon Sep 17 00:00:00 2001 From: Holger Hans Peter Freyther Date: Tue, 29 Dec 2009 11:26:38 +0100 Subject: [PATCH] [abis] Add ACK signal and send it on SET NVATTR ACK * Add the signal definition to signal.h * Dispatch the signal from abis_nm.c * Handle it in ipaccess-config.c and say we are done with work --- openbsc/include/openbsc/signal.h | 1 + openbsc/src/abis_nm.c | 3 +++ openbsc/src/ipaccess/ipaccess-config.c | 13 +++++++++++++ 3 files changed, 17 insertions(+) diff --git a/openbsc/include/openbsc/signal.h b/openbsc/include/openbsc/signal.h index 8c815f89e..f13b12be8 100644 --- a/openbsc/include/openbsc/signal.h +++ b/openbsc/include/openbsc/signal.h @@ -69,6 +69,7 @@ enum signal_nm { S_NM_FAIL_REP, /* GSM 12.21 failure event report */ S_NM_NACK, /* GSM 12.21 various NM_MT_*_NACK happened */ S_NM_IPACC_NACK, /* GSM 12.21 nanoBTS extensions NM_MT_IPACC_*_*_NACK happened */ + S_NM_IPACC_ACK, /* GSM 12.21 nanoBTS extensions NM_MT_IPACC_*_*_ACK happened */ S_NM_TEST_REP, /* GSM 12.21 Test Report */ }; diff --git a/openbsc/src/abis_nm.c b/openbsc/src/abis_nm.c index 211f70ee4..9dedcaf5d 100644 --- a/openbsc/src/abis_nm.c +++ b/openbsc/src/abis_nm.c @@ -2805,6 +2805,9 @@ static int abis_nm_rx_ipacc(struct msgb *msg) case NM_MT_IPACC_GET_NVATTR_NACK: dispatch_signal(SS_NM, S_NM_IPACC_NACK, &foh->msg_type); break; + case NM_MT_IPACC_SET_NVATTR_ACK: + dispatch_signal(SS_NM, S_NM_IPACC_ACK, &foh->msg_type); + break; default: break; } diff --git a/openbsc/src/ipaccess/ipaccess-config.c b/openbsc/src/ipaccess/ipaccess-config.c index 016459bdd..3b81c2a38 100644 --- a/openbsc/src/ipaccess/ipaccess-config.c +++ b/openbsc/src/ipaccess/ipaccess-config.c @@ -83,6 +83,16 @@ static int ipacc_msg_nack(u_int8_t mt) return 0; } +static int ipacc_msg_ack(u_int8_t mt) +{ + if (sw_load_state == 1) { + fprintf(stderr, "The new software is activaed.\n"); + exit(0); + } + + return 0; +} + struct ipacc_ferr_elem { int16_t freq_err; u_int8_t freq_qual; @@ -170,6 +180,9 @@ static int nm_sig_cb(unsigned int subsys, unsigned int signal, case S_NM_IPACC_NACK: msg_type = signal_data; return ipacc_msg_nack(*msg_type); + case S_NM_IPACC_ACK: + msg_type = signal_data; + return ipacc_msg_ack(*msg_type); case S_NM_TEST_REP: return test_rep(signal_data); default: