Unverified Commit d3d1b392 authored by Ali Güngör's avatar Ali Güngör Committed by GitHub

Merge pull request #455 from aligungr/ipv6-sctp

Ipv6 sctp
parents 495de8bf 23696053
...@@ -49,7 +49,7 @@ static nr::gnb::GnbConfig *ReadConfigYaml() ...@@ -49,7 +49,7 @@ static nr::gnb::GnbConfig *ReadConfigYaml()
result->tac = yaml::GetInt32(config, "tac", 0, 0xFFFFFF); result->tac = yaml::GetInt32(config, "tac", 0, 0xFFFFFF);
result->portalIp = yaml::GetIp(config, "linkIp"); result->portalIp = yaml::GetIp(config, "linkIp");
result->ngapIp = yaml::GetIp4(config, "ngapIp"); result->ngapIp = yaml::GetIp(config, "ngapIp");
result->gtpIp = yaml::GetIp4(config, "gtpIp"); result->gtpIp = yaml::GetIp4(config, "gtpIp");
if (yaml::HasField(config, "gtpAdvertiseIp")) if (yaml::HasField(config, "gtpAdvertiseIp"))
...@@ -63,7 +63,7 @@ static nr::gnb::GnbConfig *ReadConfigYaml() ...@@ -63,7 +63,7 @@ static nr::gnb::GnbConfig *ReadConfigYaml()
for (auto &amfConfig : yaml::GetSequence(config, "amfConfigs")) for (auto &amfConfig : yaml::GetSequence(config, "amfConfigs"))
{ {
nr::gnb::GnbAmfConfig c{}; nr::gnb::GnbAmfConfig c{};
c.address = yaml::GetIp4(amfConfig, "address"); c.address = yaml::GetIp(amfConfig, "address");
c.port = static_cast<uint16_t>(yaml::GetInt32(amfConfig, "port", 1024, 65535)); c.port = static_cast<uint16_t>(yaml::GetInt32(amfConfig, "port", 1024, 65535));
result->amfConfigs.push_back(c); result->amfConfigs.push_back(c);
} }
......
...@@ -9,6 +9,7 @@ ...@@ -9,6 +9,7 @@
#include <sstream> #include <sstream>
#include <gnb/types.hpp> #include <gnb/types.hpp>
#include <utils/common.hpp>
namespace nr::gnb namespace nr::gnb
{ {
...@@ -38,7 +39,7 @@ Json ToJson(const NgapAmfContext &v) ...@@ -38,7 +39,7 @@ Json ToJson(const NgapAmfContext &v)
return Json::Obj({ return Json::Obj({
{"id", v.ctxId}, {"id", v.ctxId},
{"name", v.amfName}, {"name", v.amfName},
{"address", v.address + ":" + std::to_string(v.port)}, {"address", ((utils::GetIpVersion(v.address) == 6) ? "[" + v.address + "]" : v.address) + ":" + std::to_string(v.port)},
{"state", ToJson(v.state).str()}, {"state", ToJson(v.state).str()},
{"capacity", v.relativeCapacity}, {"capacity", v.relativeCapacity},
{"association", ToJson(v.association)}, {"association", ToJson(v.association)},
......
...@@ -63,7 +63,13 @@ void BindSocket(int sd, const std::string &address, uint16_t port) ...@@ -63,7 +63,13 @@ void BindSocket(int sd, const std::string &address, uint16_t port)
ThrowError("Bad IPv4 address."); ThrowError("Bad IPv4 address.");
} }
else if (ipVersion == 6) else if (ipVersion == 6)
ThrowError("IPv6 for SCTP is not supported yet."); {
auto addr6 = (sockaddr_in6 *)addr;
addr6->sin6_family = AF_INET6;
addr6->sin6_port = htons(port);
if (inet_pton(AF_INET6, address.c_str(), &(addr6->sin6_addr)) != 1)
ThrowError("Bad IPv6 address.");
}
else else
ThrowError("Bad IPv4 or IPv6 address."); ThrowError("Bad IPv4 or IPv6 address.");
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment