return ca.toString();
}
else if(parts.size()==1) {
- boost::replace_all(parts[0],"-",":");
- ComboAddress ca(parts[0]);
- return ca.toString();
+ if (parts[0].find('-') != std::string::npos) {
+ boost::replace_all(parts[0],"-",":");
+ ComboAddress ca(parts[0]);
+ return ca.toString();
+ } else {
+ if (parts[0].size() >= 32) {
+ auto ippart = parts[0].substr(parts[0].size()-32);
+ auto fulladdress =
+ ippart.substr(0, 4) + ":" +
+ ippart.substr(4, 4) + ":" +
+ ippart.substr(8, 4) + ":" +
+ ippart.substr(12, 4) + ":" +
+ ippart.substr(16, 4) + ":" +
+ ippart.substr(20, 4) + ":" +
+ ippart.substr(24, 4) + ":" +
+ ippart.substr(28, 4);
+
+ ComboAddress ca(fulladdress);
+ return ca.toString();
+ }
+ }
}
return std::string("::");