From 561b8ba9d2b61c65e38f22980d573fb06b4f08ce Mon Sep 17 00:00:00 2001 From: Donat Zenichev Date: Wed, 7 Jun 2023 10:18:08 +0200 Subject: [PATCH] MT#57437 Upstream: Support looking up aliased interface names Backport from the upstream to support looking up aliased interface names. Upstream commit: a84509091031331159abb199e21701cb6d7e79b1 Change-Id: I557dee742351268737fe69df8991aede531bb57b --- core/AmConfig.cpp | 22 +++++++--------------- core/AmConfig.h | 1 + 2 files changed, 8 insertions(+), 15 deletions(-) diff --git a/core/AmConfig.cpp b/core/AmConfig.cpp index 58a8b627..e32b3a18 100644 --- a/core/AmConfig.cpp +++ b/core/AmConfig.cpp @@ -67,7 +67,8 @@ vector AmConfig::RTP_Ifs; map AmConfig::SIP_If_names; map AmConfig::RTP_If_names; map AmConfig::LocalSIPIP2If; -vector AmConfig::SysIfs; +vector AmConfig::SysIfs; +map AmConfig::IfName2IP; #ifndef DISABLE_DAEMON_MODE bool AmConfig::DaemonMode = DEFAULT_DAEMON_MODE; @@ -1026,6 +1027,7 @@ static bool fillSysIntfList() DBG("iface='%s';ip='%s';flags=0x%x\n",p_if->ifa_name,host,p_if->ifa_flags); intf_it->addrs.push_back(AmConfig::IPAddr(host,p_if->ifa_addr->sa_family)); + AmConfig::IfName2IP[p_if->ifa_name] = host; } freeifaddrs(ifap); @@ -1077,20 +1079,10 @@ string fixIface2IP(const string& dev_name, bool v6_for_sip) return dev_name; } - for(vector::iterator intf_it = AmConfig::SysIfs.begin(); - intf_it != AmConfig::SysIfs.end(); ++intf_it) { - - if(intf_it->name != dev_name) - continue; - - if(intf_it->addrs.empty()){ - ERROR("No IP address for interface '%s'\n",intf_it->name.c_str()); - return ""; - } - - DBG("dev_name = '%s'\n",dev_name.c_str()); - return intf_it->addrs.front().addr; - } + if (!AmConfig::IfName2IP[dev_name].empty()) { + DBG("dev_name = '%s, ip=%s'\n", dev_name.c_str(), AmConfig::IfName2IP[dev_name].c_str()); + return AmConfig::IfName2IP[dev_name]; + } return ""; } diff --git a/core/AmConfig.h b/core/AmConfig.h index eb29b62a..93db08b1 100644 --- a/core/AmConfig.h +++ b/core/AmConfig.h @@ -160,6 +160,7 @@ struct AmConfig unsigned int mtu; }; + static map IfName2IP; static vector SysIfs; static int insert_SIP_interface(const SIP_interface& intf);