Module: sems
Branch: master
Commit: a48a03a9b1f01306fcd4c75f9ff3cb5eb20b037d
URL:    
http://git.sip-router.org/cgi-bin/gitweb.cgi/sems/?a=commit;h=a48a03a9b1f01306fcd4c75f9ff3cb5eb20b037d

Author: Raphael Coeffic <[email protected]>
Committer: Raphael Coeffic <[email protected]>
Date:   Thu Jan 26 17:13:28 2012 +0100

core: add support for supplementary IPs (e.g. VIP).

---

 core/AmConfig.cpp |   26 ++++++++++++++++++++++++++
 1 files changed, 26 insertions(+), 0 deletions(-)

diff --git a/core/AmConfig.cpp b/core/AmConfig.cpp
index 2294607..a335b87 100644
--- a/core/AmConfig.cpp
+++ b/core/AmConfig.cpp
@@ -738,6 +738,32 @@ static bool fillSysIntfList()
   }
 
   freeifaddrs(ifap);
+
+  // add addresses from SysIntfList, if not present
+  for(unsigned int idx = 0; idx < AmConfig::Ifs.size(); idx++) {
+
+    list<AmConfig::SysIntf>::iterator intf_it = AmConfig::SysIfs.begin();
+    for(;intf_it != AmConfig::SysIfs.end(); ++intf_it) {
+
+      list<string>::iterator addr_it = std::find(intf_it->addrs.begin(),
+                                                intf_it->addrs.end(),
+                                                AmConfig::Ifs[idx].LocalSIPIP);
+      // address not in this interface
+      if(addr_it == intf_it->addrs.end())
+       continue;
+
+      // address is primary
+      if(addr_it == intf_it->addrs.begin())
+       continue;
+
+      if(AmConfig::LocalSIPIP2If.find(intf_it->addrs.front())
+        == AmConfig::LocalSIPIP2If.end()) {
+       
+       AmConfig::LocalSIPIP2If[intf_it->addrs.front()] = idx;
+      }
+    }
+  }
+
   return true;
 }
 

_______________________________________________
Semsdev mailing list
[email protected]
http://lists.iptel.org/mailman/listinfo/semsdev

Reply via email to