Move prefixtable back to all IPv6 internal handling.

Changing that was just a bad idea and unnecessary.
This commit is contained in:
Johanna Amann 2016-03-11 09:44:57 -08:00
parent 21c300c333
commit ad9b0fc550

View file

@ -5,39 +5,17 @@ prefix_t* PrefixTable::MakePrefix(const IPAddr& addr, int width)
{ {
prefix_t* prefix = (prefix_t*) safe_malloc(sizeof(prefix_t)); prefix_t* prefix = (prefix_t*) safe_malloc(sizeof(prefix_t));
if ( addr.GetFamily() == IPv4 ) addr.CopyIPv6(&prefix->add.sin6);
{ prefix->family = AF_INET6;
addr.CopyIPv4(&prefix->add.sin); prefix->bitlen = width;
prefix->family = AF_INET; prefix->ref_count = 1;
prefix->bitlen = width;
prefix->ref_count = 1;
}
else
{
addr.CopyIPv6(&prefix->add.sin6);
prefix->family = AF_INET6;
prefix->bitlen = width;
prefix->ref_count = 1;
}
return prefix; return prefix;
} }
IPPrefix PrefixTable::PrefixToIPPrefix(prefix_t* prefix) IPPrefix PrefixTable::PrefixToIPPrefix(prefix_t* prefix)
{ {
if ( prefix->family == AF_INET ) return IPPrefix(IPAddr(IPv6, reinterpret_cast<const uint32_t*>(&prefix->add.sin6), IPAddr::Network), prefix->bitlen, 1);
{
return IPPrefix(IPAddr(IPv4, reinterpret_cast<const uint32_t*>(&prefix->add.sin), IPAddr::Network), prefix->bitlen);
}
else if ( prefix->family == AF_INET6 )
{
return IPPrefix(IPAddr(IPv6, reinterpret_cast<const uint32_t*>(&prefix->add.sin6), IPAddr::Network), prefix->bitlen, 0);
}
else
{
reporter->InternalWarning("Unknown prefix family for PrefixToIPAddr");
return IPPrefix();
}
} }
void* PrefixTable::Insert(const IPAddr& addr, int width, void* data) void* PrefixTable::Insert(const IPAddr& addr, int width, void* data)
@ -70,12 +48,12 @@ void* PrefixTable::Insert(const Val* value, void* data)
switch ( value->Type()->Tag() ) { switch ( value->Type()->Tag() ) {
case TYPE_ADDR: case TYPE_ADDR:
return Insert(value->AsAddr(), value->AsAddr().GetFamily() == IPv4 ? 32 : 128, data); return Insert(value->AsAddr(), 128, data);
break; break;
case TYPE_SUBNET: case TYPE_SUBNET:
return Insert(value->AsSubNet().Prefix(), return Insert(value->AsSubNet().Prefix(),
value->AsSubNet().Length(), data); value->AsSubNet().LengthIPv6(), data);
break; break;
default: default:
@ -106,7 +84,7 @@ list<IPPrefix> PrefixTable::FindAll(const IPAddr& addr, int width) const
list<IPPrefix> PrefixTable::FindAll(const SubNetVal* value) const list<IPPrefix> PrefixTable::FindAll(const SubNetVal* value) const
{ {
return FindAll(value->AsSubNet().Prefix(), value->AsSubNet().Length()); return FindAll(value->AsSubNet().Prefix(), value->AsSubNet().LengthIPv6());
} }
void* PrefixTable::Lookup(const IPAddr& addr, int width, bool exact) const void* PrefixTable::Lookup(const IPAddr& addr, int width, bool exact) const
@ -132,12 +110,12 @@ void* PrefixTable::Lookup(const Val* value, bool exact) const
switch ( value->Type()->Tag() ) { switch ( value->Type()->Tag() ) {
case TYPE_ADDR: case TYPE_ADDR:
return Lookup(value->AsAddr(), value->AsAddr().GetFamily() == IPv4 ? 32 : 128, exact); return Lookup(value->AsAddr(), 128, exact);
break; break;
case TYPE_SUBNET: case TYPE_SUBNET:
return Lookup(value->AsSubNet().Prefix(), return Lookup(value->AsSubNet().Prefix(),
value->AsSubNet().Length(), exact); value->AsSubNet().LengthIPv6(), exact);
break; break;
default: default:
@ -171,12 +149,12 @@ void* PrefixTable::Remove(const Val* value)
switch ( value->Type()->Tag() ) { switch ( value->Type()->Tag() ) {
case TYPE_ADDR: case TYPE_ADDR:
return Remove(value->AsAddr(), value->AsAddr().GetFamily() == IPv4 ? 32 : 128); return Remove(value->AsAddr(), 128);
break; break;
case TYPE_SUBNET: case TYPE_SUBNET:
return Remove(value->AsSubNet().Prefix(), return Remove(value->AsSubNet().Prefix(),
value->AsSubNet().Length()); value->AsSubNet().LengthIPv6());
break; break;
default: default: