summaryrefslogtreecommitdiff
path: root/plainPacket.cpp
diff options
context:
space:
mode:
authorChristian Pointner <equinox@anytun.org>2008-02-28 01:57:42 +0000
committerChristian Pointner <equinox@anytun.org>2008-02-28 01:57:42 +0000
commita742bbf8610aae58fc6d6ee2377c83395b3ca535 (patch)
treea8840f313844dc48225c3219f5e8e7f8aa0fabc6 /plainPacket.cpp
parentadded get Src/Dst Address @ plainPacket (diff)
fixed PlainPacket get Src/Dst Address
added toString to NetworkAddress
Diffstat (limited to 'plainPacket.cpp')
-rw-r--r--plainPacket.cpp16
1 files changed, 10 insertions, 6 deletions
diff --git a/plainPacket.cpp b/plainPacket.cpp
index 1789854..f9c43ae 100644
--- a/plainPacket.cpp
+++ b/plainPacket.cpp
@@ -89,19 +89,21 @@ NetworkAddress PlainPacket::getSrcAddr() const
if(!payload_type_ || !payload_)
return NetworkAddress();
- if(PAYLOAD_TYPE_TAP) // Ehternet
+ payload_type_t type = PAYLOAD_TYPE_T_NTOH(*payload_type_);
+
+ if(type == PAYLOAD_TYPE_TAP) // Ehternet
{
// TODO
return NetworkAddress();
}
- else if(PAYLOAD_TYPE_TUN) // IPv4
+ else if(type == PAYLOAD_TYPE_TUN) // IPv4
{
if(length_ < (sizeof(payload_type_t)+sizeof(struct ip)))
return NetworkAddress();
struct ip* hdr = reinterpret_cast<struct ip*>(payload_);
return NetworkAddress(hdr->ip_src);
}
- else if(PAYLOAD_TYPE_TUN6) // IPv6
+ else if(type == PAYLOAD_TYPE_TUN6) // IPv6
{
if(length_ < (sizeof(payload_type_t)+sizeof(struct ip6_hdr)))
return NetworkAddress();
@@ -117,19 +119,21 @@ NetworkAddress PlainPacket::getDstAddr() const
if(!payload_type_ || !payload_)
return NetworkAddress();
- if(PAYLOAD_TYPE_TAP) // Ehternet
+ payload_type_t type = PAYLOAD_TYPE_T_NTOH(*payload_type_);
+
+ if(type == PAYLOAD_TYPE_TAP) // Ehternet
{
// TODO
return NetworkAddress();
}
- else if(PAYLOAD_TYPE_TUN) // IPv4
+ else if(type == PAYLOAD_TYPE_TUN) // IPv4
{
if(length_ < (sizeof(payload_type_t)+sizeof(struct ip)))
return NetworkAddress();
struct ip* hdr = reinterpret_cast<struct ip*>(payload_);
return NetworkAddress(hdr->ip_dst);
}
- else if(PAYLOAD_TYPE_TUN6) // IPv6
+ else if(type == PAYLOAD_TYPE_TUN6) // IPv6
{
if(length_ < (sizeof(payload_type_t)+sizeof(struct ip6_hdr)))
return NetworkAddress();