diff options
author | Harald Welte <laforge@gnumonks.org> | 2010-07-09 20:58:12 +0200 |
---|---|---|
committer | Harald Welte <laforge@gnumonks.org> | 2010-07-09 20:58:12 +0200 |
commit | c9c547aafe5b6c6df8714cf30d2bde0fdd4d0722 (patch) | |
tree | a490a7dac9dea1408893f98dbdbfa7bbafe243fc /sualibrary/sua/sua_database.cpp | |
parent | 3dc72b8cff16ffcc9babab9a9892befda44d8c4e (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.cpp | 58 |
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) */ /***********************************************************************/ |