diff options
author | Harald Welte <laforge@gnumonks.org> | 2010-07-09 20:57:43 +0200 |
---|---|---|
committer | Harald Welte <laforge@gnumonks.org> | 2010-07-09 20:57:43 +0200 |
commit | 3dc72b8cff16ffcc9babab9a9892befda44d8c4e (patch) | |
tree | f58253ec5c8a39d8215dacaf8a31297fbe5811e2 /sualibrary/testup/testuser.cpp | |
parent | 7e7186ca00b33e9735c809ce200e310636006a22 (diff) |
update to sualibrary-0.1.2 from 2002-11-26
* Contains Relaying functionality using hostnames.
* 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/testup/testuser.cpp')
-rw-r--r-- | sualibrary/testup/testuser.cpp | 84 |
1 files changed, 68 insertions, 16 deletions
diff --git a/sualibrary/testup/testuser.cpp b/sualibrary/testup/testuser.cpp index 2a9d69f..0d7facf 100644 --- a/sualibrary/testup/testuser.cpp +++ b/sualibrary/testup/testuser.cpp @@ -15,7 +15,7 @@ * * ***************************************************************************/ /* - * $Id: testuser.cpp,v 1.2 2002/02/15 16:20:29 p82609 Exp $ + * $Id: testuser.cpp,v 1.7 2002/11/14 15:29:24 p82609 Exp $ * * SUA Test user part implementation. * @@ -189,13 +189,17 @@ void init_testip_stdin() /***********************************************************************/ /* Test User Part : testip_stdin_cb */ /***********************************************************************/ -void testip_stdin_cb( int fd, - short int revents, - void *dummy +void testip_stdin_cb( int fd, + short int revents, + short int *gotevents, + void *dummy ) { int i,length; + unsigned int k, outstr_len; char readBuffer[256]; + char output_str[INET6_ADDRSTRLEN]; + const char *ptr; unsigned int xsxx; sccp_QOS_str udt_QOS, co_QOS; @@ -237,6 +241,12 @@ void testip_stdin_cb( int fd, /* exit program */ exit(0); } + else if (cmdline.find("term") != cmdline.npos) + { + /* add some cleanups */ + sua_shutdown(); + cout << "Closing down the SCTP & SUA associations\n"; + } else if ((cmdline.find("rep:") != cmdline.npos)) { cout << "Repeat sending CL/CO data to remote end every " << rep_timer << " sec\n"; @@ -254,15 +264,57 @@ void testip_stdin_cb( int fd, else if (cmdline.find("disp mngt") != cmdline.npos) { /* Display the management status of all SUA instances */ - cout << "| Association | SUA management status |\n"; - cout << "+-------------+-----------------------+\n"; + cout << "Display SUA administration and Mangagement data of all associations\n"; + cout << "|-------+--------+--------------------+--------------------+-----|\n"; + cout << "| Assoc | status | local IP addr | Remote IP addr | SSN |\n"; + cout << "|-------+--------+--------------------+--------------------+-----|\n"; i = 1; while ( SUA_PATH_NO_ERROR == sua_getPath(i,pathinfo) ) { - cout << "| " << i <<" | "<< pathinfo.ASP_status << " |\n"; + cout << "| " << i <<" | "<< pathinfo.ASP_status << " | "; + if (pathinfo.local_addr.pc.ipvx.sa.sa_family == AF_INET) + { /* ipv4 */ + ptr = inet_ntop( pathinfo.local_addr.pc.ipvx.sa.sa_family, + &pathinfo.local_addr.pc.ipvx.sin.sin_addr, + output_str, + sizeof(output_str) + ); + cout << output_str; + outstr_len = strlen(output_str); + for(k=0; k < (20 - 3 - outstr_len); k++) + cout << " "; + cout << "| "; + ptr = inet_ntop( pathinfo.remote_addr.pc.ipvx.sa.sa_family, + &pathinfo.remote_addr.pc.ipvx.sin.sin_addr, + output_str, + sizeof(output_str) + ); + cout << output_str; + for(k=0; k < /*(20 -*/ 3 /*- outstr_len)*/; k++) + cout << " "; + cout << "| "; + cout << pathinfo.remote_addr.ssn << " |\n"; + } + else + { /* ipv6 */ + ptr = inet_ntop( pathinfo.local_addr.pc.ipvx.sa.sa_family, + &pathinfo.local_addr.pc.ipvx.sin6.sin6_addr, + output_str, + sizeof(output_str) + ); + cout << output_str << " | "; + ptr = inet_ntop( pathinfo.remote_addr.pc.ipvx.sa.sa_family, + &pathinfo.remote_addr.pc.ipvx.sin6.sin6_addr, + output_str, + sizeof(output_str) + ); + cout << output_str << " | "; + cout << pathinfo.remote_addr.ssn << " |\n"; + } + i++; } - cout << "+-------------+-----------------------+\n"; + cout << "|-------+--------+--------------------+--------------------+-----|\n"; cout << "ASP status values: see sua_asp_mgnt.h\n"; } else if (cmdline.find("term") != cmdline.npos) @@ -333,7 +385,7 @@ void testip_stdin_cb( int fd, called_pty_addr.address_fields_present.ssn_port = ssn_present; called_pty_addr.address_fields_present.field_in_header = include_nothing; strcpy(called_pty_addr.name.HostName,addr_str.c_str()); - called_pty_addr.ssn = 255; + called_pty_addr.ssn = calling_pty_addr.ssn; called_pty_addr.routing_ind = route_on_name_gt; cout << "DNS/SUA dest hostname = " << addr_str << "\n"; @@ -345,7 +397,7 @@ void testip_stdin_cb( int fd, calling_pty_addr.address_fields_present.name_gt = hostname_present; strcpy(calling_pty_addr.name.HostName, own_hostname); - calling_pty_addr.ssn = 255; + calling_pty_addr.ssn = 5; calling_pty_addr.routing_ind = route_on_name_gt; cout << "DNS/SUA source hostname = " << addr2_str << "\n"; @@ -364,10 +416,10 @@ void testip_stdin_cb( int fd, called_pty_addr.address_fields_present.field_in_header = include_nothing; called_pty_addr.pc.ss7.ITU24.family = ITU24bit; called_pty_addr.pc.ss7.ITU24.pc = atoi(addr_char); - called_pty_addr.ssn = 255; + called_pty_addr.ssn = calling_pty_addr.ssn; called_pty_addr.routing_ind = route_on_ssn; - calling_pty_addr.ssn = 255; + calling_pty_addr.ssn = 5; calling_pty_addr.routing_ind = route_on_ssn; cout << "Address of remote end stored. Msg will be sent to this one\n"; @@ -448,8 +500,6 @@ void testip_stdin_cb( int fd, calling_pty_addr.address_fields_present.field_in_header = called_pty_addr.address_fields_present.field_in_header; string addr4_str = own_hostname; - /*char *name4_char = new char [addr4_str.length()+1]; */ - /*name4_char = shost_to_suaname ( addr4_str ); */ strcpy(calling_pty_addr.name.HostName, own_hostname); calling_pty_addr.pc.ipvx = pathinfo.local_addr.pc.ipvx; @@ -503,7 +553,8 @@ void timer_expired(unsigned int tID, sendcnt++; cout << "Send a PING\n"; doPingPong(Sua_ConnId); - timerID = sctp_startTimer( 10000, + timerID = sctp_startTimer( 10, /* seconds */ + 0, /* microseconds */ &timer_expired, NULL, NULL @@ -728,7 +779,8 @@ void ulp_ConnConfIndNotif( unsigned int local_sua_Id, // received the connection confirmed msg // this is the initiator of the connection // start a timer for sending the data to the responder - timerID = sctp_startTimer( 5000, + timerID = sctp_startTimer( 15, /* seconds */ + 0, /* microseconds */ &timer_expired, NULL, NULL |