aboutsummaryrefslogtreecommitdiffstats
path: root/sualibrary/sua/sua_database.cpp
diff options
context:
space:
mode:
authorHarald Welte <laforge@gnumonks.org>2010-07-09 20:58:12 +0200
committerHarald Welte <laforge@gnumonks.org>2010-07-09 20:58:12 +0200
commitc9c547aafe5b6c6df8714cf30d2bde0fdd4d0722 (patch)
treea490a7dac9dea1408893f98dbdbfa7bbafe243fc /sualibrary/sua/sua_database.cpp
parent3dc72b8cff16ffcc9babab9a9892befda44d8c4e (diff)
update to sualibrary-0.1.3 released 2003-05-28
* Contains Relaying functionality using Global Titles and hostnames. * New configuration commands via configuration file. * Correct some bugs * Compiles and runs on Linux, FreeBSD, Max OS X .... * Tested on IPv4 and IPV6 networks * interoperable with other SUA implementations * corresponds to sua draft v13 * requires SCTP implementation sctplib-1.0.0-pre19 from www.sctp.de
Diffstat (limited to 'sualibrary/sua/sua_database.cpp')
-rw-r--r--sualibrary/sua/sua_database.cpp58
1 files changed, 47 insertions, 11 deletions
diff --git a/sualibrary/sua/sua_database.cpp b/sualibrary/sua/sua_database.cpp
index 8604ee5..a8987b7 100644
--- a/sualibrary/sua/sua_database.cpp
+++ b/sualibrary/sua/sua_database.cpp
@@ -15,7 +15,7 @@
* *
***************************************************************************/
/*
- * $Id: sua_database.cpp,v 1.2 2002/10/30 16:04:09 p82609 Exp $
+ * $Id: sua_database.cpp,v 1.2 2003/01/16 15:07:56 p82609 Exp $
*
* SUA implementation according to SUA draft issue 6.
*
@@ -358,20 +358,55 @@ short db_Sua_LocalList:: unregister_instance(){
/* Sua_LocalList::register_instance */
/***********************************************************************/
short db_Sua_LocalList::
-register_instance( unsigned int local_sua_id,
- Sua_ULP_CallBacks SUACallbackFunctions,
- unsigned int init_association
+register_instance( SCTP_ulp_Callbacks APLCallbackFunctions,
+ Sua_ULP_CallBacks SUACallbackFunctions
){
+ int i;
+ short sua_portnumber = SUA_PORT;
+#ifdef DEBUG
+ cout << "Number of local sua instance to register = " << num_of_instance << "\n";
+#endif
- instance[local_sua_id].SUA_APLCallBack.ulp_ClDataIndNotif = SUACallbackFunctions.ulp_ClDataIndNotif;
- instance[local_sua_id].SUA_APLCallBack.ulp_ConnIndNotif = SUACallbackFunctions.ulp_ConnIndNotif;
- instance[local_sua_id].SUA_APLCallBack.ulp_ConnConfIndNotif = SUACallbackFunctions.ulp_ConnConfIndNotif;
- instance[local_sua_id].SUA_APLCallBack.ulp_ConnDataIndNotif = SUACallbackFunctions.ulp_ConnDataIndNotif;
- instance[local_sua_id].SUA_APLCallBack.ulp_DisConnIndNotif = SUACallbackFunctions.ulp_DisConnIndNotif;
-
- instance[local_sua_id].init_assoc_id = init_association;
+ for(i=1; i <= num_of_instance; i++)
+ {
+#ifdef DEBUG
+ cout << "Register SUA(& SCTP) local instance nr " << i << ", SSN = "<< instance[i].ssn.ssn <<" \n";
+#endif
+ char logstring[100];
+ sprintf(logstring, "Register SUA(& SCTP) local instance nr %d, SSN = %d",i,instance[i].ssn.ssn );
+ event_log("sua_database.c",logstring);
+
+ instance[i].SUA_APLCallBack.ulp_ClDataIndNotif = SUACallbackFunctions.ulp_ClDataIndNotif;
+ instance[i].SUA_APLCallBack.ulp_ConnIndNotif = SUACallbackFunctions.ulp_ConnIndNotif;
+ instance[i].SUA_APLCallBack.ulp_ConnConfIndNotif = SUACallbackFunctions.ulp_ConnConfIndNotif;
+ instance[i].SUA_APLCallBack.ulp_ConnDataIndNotif = SUACallbackFunctions.ulp_ConnDataIndNotif;
+ instance[i].SUA_APLCallBack.ulp_DisConnIndNotif = SUACallbackFunctions.ulp_DisConnIndNotif;
+
+ if (instance[i].Source.addrs[0].sa.sa_family == AF_INET)
+ sua_portnumber = instance[i].Source.addrs[0].sin.sin_port;
+ else if (instance[i].Source.addrs[0].sa.sa_family == AF_INET6)
+ sua_portnumber = instance[i].Source.addrs[0].sin6.sin6_port;
+
+ instance[i].SCTP_instance_name =
+ sctp_registerInstance( sua_portnumber,
+ instance[i].max_streams,
+ instance[i].max_streams,
+ instance[i].Source.nr_of_addrs,
+ instance[i].Source.address_string,
+ APLCallbackFunctions
+ );
+
+#ifdef DEBUG
+ cout << "SCTP instance name = " << instance[i].SCTP_instance_name << " \n";
+#endif
+ sprintf(logstring, "Local SCTP instance nr %d name = %d", i, instance[i].SCTP_instance_name);
+ event_log("sua_database.c",logstring);
+
+ }
+return(0);
+
return(0);
}
@@ -424,6 +459,7 @@ void db_Sua_RemoteList:: increase_instance(){
event_log("sua_database.c",logstring);
};
+
/***********************************************************************/
/* functions of the object class SUA Application Server Process (ASP) */
/***********************************************************************/