406 |
406 |
407 memcpy (addr, m_address, 16); |
407 memcpy (addr, m_address, 16); |
408 ((Ipv6Prefix)prefix).GetBytes (pref); |
408 ((Ipv6Prefix)prefix).GetBytes (pref); |
409 |
409 |
410 /* a little bit ugly... */ |
410 /* a little bit ugly... */ |
411 for (i = 0 ; i < 16 ; i++) |
411 for (i = 0; i < 16; i++) |
412 { |
412 { |
413 addr[i] = addr[i] & pref[i]; |
413 addr[i] = addr[i] & pref[i]; |
414 } |
414 } |
415 ipv6.Set (addr); |
415 ipv6.Set (addr); |
416 return ipv6; |
416 return ipv6; |
652 } |
652 } |
653 |
653 |
654 void Ipv6Prefix::Print (std::ostream &os) const |
654 void Ipv6Prefix::Print (std::ostream &os) const |
655 { |
655 { |
656 os << std::hex << std::setw (2) << std::setfill ('0') << (unsigned int) m_prefix[0] |
656 os << std::hex << std::setw (2) << std::setfill ('0') << (unsigned int) m_prefix[0] |
657 << std::hex << std::setw (2) << std::setfill ('0') << (unsigned int) m_prefix[1] << ":" |
657 << std::hex << std::setw (2) << std::setfill ('0') << (unsigned int) m_prefix[1] << ":" |
658 << std::hex << std::setw (2) << std::setfill ('0') << (unsigned int) m_prefix[2] |
658 << std::hex << std::setw (2) << std::setfill ('0') << (unsigned int) m_prefix[2] |
659 << std::hex << std::setw (2) << std::setfill ('0') << (unsigned int) m_prefix[3] << ":" |
659 << std::hex << std::setw (2) << std::setfill ('0') << (unsigned int) m_prefix[3] << ":" |
660 << std::hex << std::setw (2) << std::setfill ('0') << (unsigned int) m_prefix[4] |
660 << std::hex << std::setw (2) << std::setfill ('0') << (unsigned int) m_prefix[4] |
661 << std::hex << std::setw (2) << std::setfill ('0') << (unsigned int) m_prefix[5] << ":" |
661 << std::hex << std::setw (2) << std::setfill ('0') << (unsigned int) m_prefix[5] << ":" |
662 << std::hex << std::setw (2) << std::setfill ('0') << (unsigned int) m_prefix[6] |
662 << std::hex << std::setw (2) << std::setfill ('0') << (unsigned int) m_prefix[6] |
663 << std::hex << std::setw (2) << std::setfill ('0') << (unsigned int) m_prefix[7] << ":" |
663 << std::hex << std::setw (2) << std::setfill ('0') << (unsigned int) m_prefix[7] << ":" |
664 << std::hex << std::setw (2) << std::setfill ('0') << (unsigned int) m_prefix[8] |
664 << std::hex << std::setw (2) << std::setfill ('0') << (unsigned int) m_prefix[8] |
665 << std::hex << std::setw (2) << std::setfill ('0') << (unsigned int) m_prefix[9] << ":" |
665 << std::hex << std::setw (2) << std::setfill ('0') << (unsigned int) m_prefix[9] << ":" |
666 << std::hex << std::setw (2) << std::setfill ('0') << (unsigned int) m_prefix[10] |
666 << std::hex << std::setw (2) << std::setfill ('0') << (unsigned int) m_prefix[10] |
667 << std::hex << std::setw (2) << std::setfill ('0') << (unsigned int) m_prefix[11] << ":" |
667 << std::hex << std::setw (2) << std::setfill ('0') << (unsigned int) m_prefix[11] << ":" |
668 << std::hex << std::setw (2) << std::setfill ('0') << (unsigned int) m_prefix[12] |
668 << std::hex << std::setw (2) << std::setfill ('0') << (unsigned int) m_prefix[12] |
669 << std::hex << std::setw (2) << std::setfill ('0') << (unsigned int) m_prefix[13] << ":" |
669 << std::hex << std::setw (2) << std::setfill ('0') << (unsigned int) m_prefix[13] << ":" |
670 << std::hex << std::setw (2) << std::setfill ('0') << (unsigned int) m_prefix[14] |
670 << std::hex << std::setw (2) << std::setfill ('0') << (unsigned int) m_prefix[14] |
671 << std::hex << std::setw (2) << std::setfill ('0') << (unsigned int) m_prefix[15]; |
671 << std::hex << std::setw (2) << std::setfill ('0') << (unsigned int) m_prefix[15]; |
672 } |
672 } |
673 |
673 |
674 Ipv6Prefix Ipv6Prefix::GetLoopback () |
674 Ipv6Prefix Ipv6Prefix::GetLoopback () |
675 { |
675 { |
676 static Ipv6Prefix prefix ((uint8_t)128); |
676 static Ipv6Prefix prefix ((uint8_t)128); |