aboutsummaryrefslogtreecommitdiffstats
path: root/sualibrary/sua/sua_database.cpp
diff options
context:
space:
mode:
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) */
/***********************************************************************/