aboutsummaryrefslogtreecommitdiffstats
path: root/sualibrary/sua/sua_snm_mgnt.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'sualibrary/sua/sua_snm_mgnt.cpp')
-rw-r--r--sualibrary/sua/sua_snm_mgnt.cpp195
1 files changed, 195 insertions, 0 deletions
diff --git a/sualibrary/sua/sua_snm_mgnt.cpp b/sualibrary/sua/sua_snm_mgnt.cpp
new file mode 100644
index 0000000..fadd04d
--- /dev/null
+++ b/sualibrary/sua/sua_snm_mgnt.cpp
@@ -0,0 +1,195 @@
+/***************************************************************************
+ sua_snm_mgnt.cpp - description
+ -------------------
+ begin : Tue Nov 4 2002
+ copyright : (C) 2002 by Lode Coene
+ email : lode.coene@siemens.atea.be
+ ***************************************************************************/
+
+/***************************************************************************
+ * *
+ * This program is free software; you can redistribute it and/or modify *
+ * it under the terms of the GNU General Public License as published by *
+ * the Free Software Foundation; either version 2 of the License, or *
+ * (at your option) any later version. *
+ * *
+ ***************************************************************************/
+/*
+ * $Id: sua_snm_mgnt.cpp,v 1.1 2002/11/12 11:04:12 p82609 Exp $
+ *
+ * SUA implementation according to SUA draft issue 14.
+ *
+ * Author(s): Lode Coene
+ *
+ *
+ * Copyright (C) 2001 by Siemens Atea, Herentals, Belgium.
+ *
+ * Realized in co-operation between Siemens Atea and
+ * Siemens AG, Munich, Germany.
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+ *
+ * Contact: gery.verwimp@siemens.atea.be
+ * lode.coene@siemens.atea.be
+ *
+ * The alternative comment
+ * inspiration : Sabine
+ * "Due to small parts(Booleans), this code is not suitable for"
+ * "childeren under 3 years."
+ *
+ * Purpose: This code-file defines the SUA management handling functions for
+ * sending and receiving SignallingNetwork Management(SNM) messages:
+ * - send a Destination avialeble (DAVA) msg to remote node
+ * - Receive/process Destination State audit(DAUD) msg
+ */
+
+#include "sua_debug.h"
+#include "sua_asp_mgnt.h"
+#include "sua_database.h"
+#include "sua_syntax.h"
+#include "sua_logging.h"
+#include "sua_tcb.h"
+
+#include <cstdio>
+#include <iostream>
+#include <string>
+
+using namespace std;
+
+extern db_Sua_DatabaseList sua;
+
+extern tcb_Sua_msgqueue_pool msg_store;
+
+/***********************************************************************/
+/* Sending SUA Signalling Network Management msg(SNM) */
+/***********************************************************************/
+/***********************************************************************/
+/* sua_send_DAVA */
+/***********************************************************************/
+int sua_send_DAVA( unsigned int Sua_assoc_id
+ )
+{
+ Sua_container msg;
+ Sua_syntax_error_struct error;
+ int error_value = 0;
+ int string_size, datalen;
+ signed int sctp_assoc_id;
+ short stream_id = 0;
+ int delivery_type, result;
+
+ // init the message
+ msg.sua_init();
+
+ // fill in the main sua header
+ msg.sua_prim.hdr_msg_class = sua_ssnm;
+ msg.sua_prim.hdr_msg_type.ssnm = ssnm_dava;
+ msg.sua_prim.aff_pc_pres = TRUE;
+ msg.sua_prim.aff_pc = 1;
+ msg.sua_prim.info_pres = FALSE;
+
+ // encode the SUA DAVA message
+ error = msg.sua_encode();
+ string_size = msg.sua_msg.size();
+
+ delivery_type = SCTP_UNORDERED_DELIVERY;
+
+ sctp_assoc_id = sua.AssocDB.instance[Sua_assoc_id].SCTP_assoc_id;
+
+ /* does association exist? */
+ if (sctp_assoc_id > 0)
+ {
+ // send data to SCTP
+ char* databuf = new char[msg.sua_msg.length()];
+ msg.sua_msg.copy(databuf, msg.sua_msg.length());
+ datalen = msg.sua_msg.length();
+
+ /* yes it does, continue, no problem, send the msg */
+#ifdef DEBUG
+ // display byte array
+ display_byte_array(databuf , msg.sua_msg.length());
+#endif
+ char logstring[100];
+ sprintf(logstring, "SUA encoded message, ready for being send to SCTP assoc %d", sctp_assoc_id);
+ event_log("sua_snm_mgnt.c",logstring);
+ log_byte_array("sua_snm_mgnt.c", databuf,msg.sua_msg.length());
+
+ result = sctp_send ( sctp_assoc_id,
+ stream_id,
+ (unsigned char *) databuf,
+ datalen,
+ SUA_PPI,
+ SCTP_USE_PRIMARY,
+ SCTP_NO_CONTEXT,
+ SCTP_INFINITE_LIFETIME,
+ delivery_type,
+ SCTP_BUNDLING_DISABLED
+ );
+
+ error_value = result;
+ delete databuf;
+#ifdef DEBUG
+ cout << "sua_asp_mgnt.c:result DAVA sctp send = "<< result << "\n";
+#endif
+ }
+
+ return(error_value);
+}
+
+
+/***********************************************************************/
+/* Receiving SUA Signalling Network Management msg */
+/***********************************************************************/
+/***********************************************************************/
+/* sua_process_ASPUP_msg */
+/***********************************************************************/
+int process_DAUD_msg ( unsigned int sua_assoc_id,
+ int local_sua_id,
+ int remote_sua_id,
+ Sua_container sua_asp_msg
+ )
+{
+
+ int error_value;
+
+#ifdef DEBUG
+ cout << "sua_snm_mgnt.c:DAUD received, send back a DAVA, DUNA or DRST.\n";
+#endif
+
+ /*sua.AssocDB.up(sua_assoc_id,0);*/
+
+ error_value = sua_send_DAVA( sua_assoc_id );
+
+#ifdef DEBUG
+ cout << "sua_asp_mgnt.c:result send DUNA/DAVA/DRST = "<< error_value << "\n";
+#endif
+
+ return(error_value);
+}
+
+
+//end of module sua_asp_mgnt.c++
+
+
+
+
+
+
+
+
+
+
+
+
+