summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authoryamuna <yamuna@ae88bc3d-4319-0410-8dbf-d08b4c9d3795>2003-10-17 22:56:25 +0000
committeryamuna <yamuna@ae88bc3d-4319-0410-8dbf-d08b4c9d3795>2003-10-17 22:56:25 +0000
commit06f2260cf187d4d35465a7d806bc9ae413c392b4 (patch)
treedf038064231f800bfc0869a1074c61b8b6b38a20
parent4e8744a113562b72d0d2316dc1e78a42f49b1e1b (diff)
downloadATCD-06f2260cf187d4d35465a7d806bc9ae413c392b4.tar.gz
*** empty log message ***
-rw-r--r--TAO/orbsvcs/orbsvcs/AV/FlowSpec_Entry.cpp158
-rw-r--r--TAO/orbsvcs/orbsvcs/AV/FlowSpec_Entry.h12
2 files changed, 153 insertions, 17 deletions
diff --git a/TAO/orbsvcs/orbsvcs/AV/FlowSpec_Entry.cpp b/TAO/orbsvcs/orbsvcs/AV/FlowSpec_Entry.cpp
index 8d69e4bcd27..e765fbdfe43 100644
--- a/TAO/orbsvcs/orbsvcs/AV/FlowSpec_Entry.cpp
+++ b/TAO/orbsvcs/orbsvcs/AV/FlowSpec_Entry.cpp
@@ -33,6 +33,10 @@ TAO_FlowSpec_Entry::TAO_FlowSpec_Entry (void)
entry_ (),
is_multicast_ (0),
peer_addr_ (0),
+ local_sec_addr_ (0),
+ num_local_sec_addrs_ (0),
+ peer_sec_addr_ (0),
+ num_peer_sec_addrs_ (0),
peer_control_addr_ (0),
local_addr_ (0),
local_control_addr_ (0),
@@ -69,6 +73,10 @@ TAO_FlowSpec_Entry::TAO_FlowSpec_Entry (const char *flowname,
entry_ (),
is_multicast_ (0),
peer_addr_ (0),
+ local_sec_addr_ (0),
+ num_local_sec_addrs_ (0),
+ peer_sec_addr_ (0),
+ num_peer_sec_addrs_ (0),
peer_control_addr_ (0),
local_addr_ (0),
local_control_addr_ (0),
@@ -105,6 +113,10 @@ TAO_FlowSpec_Entry::TAO_FlowSpec_Entry (const char *flowname,
entry_ (),
is_multicast_ (0),
peer_addr_ (0),
+ local_sec_addr_ (0),
+ num_local_sec_addrs_ (0),
+ peer_sec_addr_ (0),
+ num_peer_sec_addrs_ (0),
peer_control_addr_ (0),
local_addr_ (0),
local_control_addr_ (0),
@@ -220,6 +232,9 @@ int
TAO_FlowSpec_Entry::parse_address (const char *address,
TAO_AV_Core::Flow_Component flow_comp)
{
+ if (TAO_debug_level > 0)
+ ACE_DEBUG ((LM_DEBUG, "TAO_FlowSpec_Entry::parse_address %s\n", address));
+
if (address == 0)
return 0;
if (ACE_OS::strcmp (address,"") == 0)
@@ -234,11 +249,38 @@ TAO_FlowSpec_Entry::parse_address (const char *address,
if (protocol_tokenizer [1] != 0)
{
+ ACE_DEBUG ((LM_DEBUG,
+ "Protocol tokenixer is not null\n"));
if ((flow_comp == TAO_AV_Core::TAO_AV_DATA) ||
+ //(flow_comp == TAO_AV_Core::TAO_AV_BOTH) ||
(flow_comp == TAO_AV_Core::TAO_AV_CONTROL) )
{
ACE_CString addr;
- addr += protocol_tokenizer[1];
+ if (this->protocol_ == TAO_AV_Core::TAO_AV_SCTP_SEQ)
+ {
+ TAO_Tokenizer addr_token (protocol_tokenizer [1], ';');
+
+ ACE_DEBUG ((LM_DEBUG,
+ "Number of local sec addresses = %d\n",
+ addr_token.num_tokens () - 1));
+
+ if (addr_token.num_tokens () != 0)
+ {
+ addr += addr_token [0];
+ ACE_NEW_RETURN (local_sec_addr_, char* [addr_token.num_tokens () - 1],-1);
+ for (int j = 1; j <= addr_token.num_tokens () - 1; j++)
+ {
+ ACE_DEBUG ((LM_DEBUG,
+ "adding addresses to sequence %s\n",
+ addr_token [j]));
+
+ local_sec_addr_ [j-1] = CORBA::string_dup (addr_token [j]);
+ }
+ num_local_sec_addrs_ = addr_token.num_tokens () - 1;
+ }
+ }
+ else addr += protocol_tokenizer[1];
+
switch (this->protocol_)
{
@@ -267,9 +309,6 @@ TAO_FlowSpec_Entry::parse_address (const char *address,
this->control_address_ = inet_addr;
}
- if (TAO_debug_level > 0)
- ACE_DEBUG ((LM_DEBUG, "TAO_FlowSpec_Entry::parse_address %s %x\n", address,inet_addr->get_ip_address () ));
-
if (IN_CLASSD (inet_addr->get_ip_address ()))
{
if (TAO_debug_level > 0)
@@ -302,6 +341,10 @@ TAO_FlowSpec_Entry::parse_address (const char *address,
}
else
{
+ ACE_DEBUG ((LM_DEBUG,
+ "AV BOTH %s \n",
+ protocol_tokenizer[1]));
+
TAO_Tokenizer address_tokenizer (protocol_tokenizer[1], ':');
TAO_Tokenizer port_tokenizer (address_tokenizer[1], ';');
ACE_CString addr;
@@ -309,6 +352,28 @@ TAO_FlowSpec_Entry::parse_address (const char *address,
addr += ":";
addr += port_tokenizer[0];
+ if (this->protocol_ == TAO_AV_Core::TAO_AV_SCTP_SEQ)
+ {
+
+ ACE_DEBUG ((LM_DEBUG,
+ "Number of local sec addresses = %d\n",
+ port_tokenizer.num_tokens () - 1));
+
+ if (port_tokenizer.num_tokens () - 1 != 0)
+ {
+ ACE_NEW_RETURN (local_sec_addr_, char* [port_tokenizer.num_tokens () - 1],-1);
+ for (int j = 1; j <= port_tokenizer.num_tokens () - 1; j++)
+ {
+ ACE_DEBUG ((LM_DEBUG,
+ "adding addresses to sequence %s\n",
+ port_tokenizer [j]));
+
+ local_sec_addr_ [j-1] = CORBA::string_dup (port_tokenizer [j]);
+ }
+ num_local_sec_addrs_ = port_tokenizer.num_tokens () - 1;
+ }
+ }
+
short control_port = ACE_OS::atoi(port_tokenizer[0]) + 1;
char control_port_str[6];
sprintf (control_port_str, "%d", control_port);
@@ -341,8 +406,6 @@ TAO_FlowSpec_Entry::parse_address (const char *address,
-1);
this->clean_up_address_ = 1;
this->address_ = inet_addr;
- if (TAO_debug_level > 0)
- ACE_DEBUG ((LM_DEBUG, "TAO_FlowSpec_Entry::parse_address %s %x\n", address,inet_addr->get_ip_address () ));
if (ACE_OS::strcasecmp (this->carrier_protocol_.c_str(),"RTP/UDP") == 0)
{
@@ -352,8 +415,6 @@ TAO_FlowSpec_Entry::parse_address (const char *address,
-1);
this->clean_up_control_address_ = 1;
this->control_address_ = control_inet_addr;
- if (TAO_debug_level > 0)
- ACE_DEBUG ((LM_DEBUG, "TAO_FlowSpec_Entry::parse_address %s %x\n", address,control_inet_addr->get_ip_address () ));
}
if (IN_CLASSD (inet_addr->get_ip_address ()))
@@ -387,6 +448,8 @@ TAO_FlowSpec_Entry::parse_address (const char *address,
}
}
}
+ ACE_DEBUG ((LM_DEBUG,
+ "Return from parse address\n"));
return 0;
}
@@ -489,10 +552,41 @@ TAO_Forward_FlowSpec_Entry::parse (const char *flowSpec_entry)
if (tokenizer [TAO_AV_PEER_ADDR] != 0)
{
- ACE_INET_Addr *addr;
- ACE_NEW_RETURN (addr,
- ACE_INET_Addr (tokenizer [TAO_AV_PEER_ADDR]),
- 0);
+ ACE_INET_Addr *addr = 0;
+
+
+ if (this->protocol_ == TAO_AV_Core::TAO_AV_SCTP_SEQ)
+ {
+ TAO_Tokenizer addr_token (tokenizer [TAO_AV_PEER_ADDR], ';');
+
+ ACE_DEBUG ((LM_DEBUG,
+ "Number of peer sec addresses = %d\n",
+ addr_token.num_tokens () - 1));
+
+ if (addr_token.num_tokens () != 0)
+ {
+ ACE_NEW_RETURN (addr,
+ ACE_INET_Addr (addr_token [0]),
+ 0);
+
+ ACE_NEW_RETURN (peer_sec_addr_, char* [addr_token.num_tokens () - 1],-1);
+ for (int j = 1; j <= addr_token.num_tokens () - 1; j++)
+ {
+ ACE_DEBUG ((LM_DEBUG,
+ "adding addresses to sequence %s\n",
+ addr_token [j]));
+
+ peer_sec_addr_ [j-1] = CORBA::string_dup (addr_token [j]);
+ }
+ num_peer_sec_addrs_ = addr_token.num_tokens () - 1;
+ }
+ }
+ else
+ {
+ ACE_NEW_RETURN (addr,
+ ACE_INET_Addr (tokenizer [TAO_AV_PEER_ADDR]),
+ 0);
+ }
this->peer_addr_ = addr;
char buf [BUFSIZ];
@@ -500,12 +594,13 @@ TAO_Forward_FlowSpec_Entry::parse (const char *flowSpec_entry)
ACE_DEBUG ((LM_DEBUG,
"Peer Address %s \n",
buf));
- }
-
+
+ }
+
if (tokenizer [TAO_AV_FLOW_PROTOCOL] != 0)
if (this->parse_flow_protocol_string (tokenizer [TAO_AV_FLOW_PROTOCOL]) < 0)
return -1;
-
+
return 0;
}
@@ -567,6 +662,15 @@ TAO_Forward_FlowSpec_Entry::entry_to_string (void)
address_str += "=";
address_str += cstring;
+ if (this->protocol_ == TAO_AV_Core::TAO_AV_SCTP_SEQ)
+ {
+ for (int i = 0; i < this->num_local_sec_addrs_; i++)
+ {
+ address_str += ";";
+ address_str += this->local_sec_addr_ [i];
+ }
+ }
+
}
else
{
@@ -642,6 +746,15 @@ TAO_Forward_FlowSpec_Entry::entry_to_string (void)
//peer_address_str = this->carrier_protocol_;
//peer_address_str += "=";
peer_address_str += cstring;
+
+ if (this->protocol_ == TAO_AV_Core::TAO_AV_SCTP_SEQ)
+ {
+ for (int i = 0; i < this->num_peer_sec_addrs_; i++)
+ {
+ peer_address_str += ";";
+ peer_address_str += this->peer_sec_addr_ [i];
+ }
+ }
}
@@ -692,9 +805,11 @@ TAO_Forward_FlowSpec_Entry::entry_to_string (void)
this->entry_ += "\\";
this->entry_ += peer_address_str;
}
+ else ACE_DEBUG ((LM_DEBUG,
+ "No peer address specified\n"));
if (TAO_debug_level > 0)
- ACE_DEBUG ((LM_DEBUG,"entry_to_string: entry = %s\n",this->entry_.c_str()));
+ ACE_DEBUG ((LM_DEBUG,"Forward entry_to_string: entry = %s\n",this->entry_.c_str()));
return this->entry_.c_str();
}
@@ -829,6 +944,15 @@ TAO_Reverse_FlowSpec_Entry::entry_to_string (void)
address_str += "=";
address_str += cstring;
+ if (this->protocol_ == TAO_AV_Core::TAO_AV_SCTP_SEQ)
+ {
+ for (int i = 0; i < this->num_local_sec_addrs_; i++)
+ {
+ address_str += ";";
+ address_str += this->local_sec_addr_ [i];
+ }
+ }
+
}
else
{
@@ -879,6 +1003,6 @@ TAO_Reverse_FlowSpec_Entry::entry_to_string (void)
// this->entry_ += "\\";
// this->entry_ += format_;
- if (TAO_debug_level > 0) ACE_DEBUG ((LM_DEBUG,"entry_to_string: entry = %s\n",this->entry_.c_str() ));
+ if (TAO_debug_level > 0) ACE_DEBUG ((LM_DEBUG,"Reverse entry_to_string: entry = %s\n",this->entry_.c_str() ));
return this->entry_.c_str();
}
diff --git a/TAO/orbsvcs/orbsvcs/AV/FlowSpec_Entry.h b/TAO/orbsvcs/orbsvcs/AV/FlowSpec_Entry.h
index 08fcaf6baf2..e171286341a 100644
--- a/TAO/orbsvcs/orbsvcs/AV/FlowSpec_Entry.h
+++ b/TAO/orbsvcs/orbsvcs/AV/FlowSpec_Entry.h
@@ -152,6 +152,14 @@ public:
int set_peer_control_addr (ACE_Addr *peer_control_addr);
ACE_Addr *get_peer_control_addr (void);
+ int set_local_sec_addr (char** local_sec_addr, int size);
+ char** get_local_sec_addr (void);
+ int num_local_sec_addrs (void);
+
+ int set_peer_sec_addr (char** peer_sec_addr, int size);
+ char** get_peer_sec_addr (void);
+ int num_peer_sec_addrs (void);
+
int set_local_addr (ACE_Addr *local_addr);
ACE_Addr *get_local_addr (void);
char *get_local_addr_str (void);
@@ -232,6 +240,10 @@ protected:
int is_multicast_;
ACE_Addr *peer_addr_;
+ char** local_sec_addr_;
+ int num_local_sec_addrs_;
+ char** peer_sec_addr_;
+ int num_peer_sec_addrs_;
ACE_Addr *peer_control_addr_;
ACE_Addr *local_addr_;
ACE_Addr *local_control_addr_;