From b10871cedcdaa6f18779fcebcc889cdd35df546b Mon Sep 17 00:00:00 2001 From: Adam Ierymenko Date: Fri, 18 Oct 2013 11:01:41 -0400 Subject: More work in netconf cleanup. --- node/MulticastGroup.hpp | 28 ++++++++++++++++++++++++++++ 1 file changed, 28 insertions(+) (limited to 'node/MulticastGroup.hpp') diff --git a/node/MulticastGroup.hpp b/node/MulticastGroup.hpp index bb025ab1..426ef048 100644 --- a/node/MulticastGroup.hpp +++ b/node/MulticastGroup.hpp @@ -69,6 +69,16 @@ public: { } + MulticastGroup(const char *s) + { + fromString(s); + } + + MulticastGroup(const std::string &s) + { + fromString(s.c_str()); + } + /** * Derive the multicast group used for address resolution (ARP/NDP) for an IP * @@ -112,6 +122,24 @@ public: return std::string(buf); } + /** + * Parse a human-readable multicast group + * + * @param s Multicast group in hex MAC/ADI format + */ + inline void fromString(const char *s) + { + char hex[17]; + unsigned int hexlen = 0; + while ((*s)&&(*s != '/')&&(hexlen < sizeof(hex) - 1)) + hex[hexlen++] = *s; + hex[hexlen] = (char)0; + _mac.fromString(hex); + if (*s == '/') + _adi = (uint32_t)Utils::hexStrToULong(++s); + else _adi = 0; + } + /** * @return Multicast address */ -- cgit v1.2.3