- if(!payload_type_ || !payload_)
- return NetworkAddress();
-
- payload_type_t type = PAYLOAD_TYPE_T_NTOH(*payload_type_);
-
- if(type == PAYLOAD_TYPE_TAP) // Ehternet
- {
- // TODO
- return NetworkAddress();
- }
- else if(type == PAYLOAD_TYPE_TUN4) // IPv4
- {
- if(length_ < (sizeof(payload_type_t)+5*4))
- return NetworkAddress();
- char * hdr = reinterpret_cast<char *>(payload_);
- boost::asio::ip::address_v4::bytes_type ip_octets;
- for (int i=0; i<4;i++)
- ip_octets[i]=hdr[4*4+i];
- return NetworkAddress(boost::asio::ip::address_v4(ip_octets));
- }
- else if(type == PAYLOAD_TYPE_TUN6) // IPv6
- {
- if(length_ < (sizeof(payload_type_t)+2*16+2*4))
- return NetworkAddress();
- char * hdr = reinterpret_cast<char *>(payload_);
- boost::asio::ip::address_v6::bytes_type ip_octets;
- for (int i=0; i<16;i++)
- ip_octets[i]=hdr[2*4+16+i];
- return NetworkAddress(boost::asio::ip::address_v6(ip_octets));
- }
- return NetworkAddress();
+ if(!payload_type_ || !payload_) {
+ return NetworkAddress();
+ }
+
+ payload_type_t type = PAYLOAD_TYPE_T_NTOH(*payload_type_);
+
+ if(type == PAYLOAD_TYPE_TAP) { // Ehternet
+ // TODO
+ return NetworkAddress();
+ } else if(type == PAYLOAD_TYPE_TUN4) { // IPv4
+ if(length_ < (sizeof(payload_type_t)+5*4)) {
+ return NetworkAddress();
+ }
+ char* hdr = reinterpret_cast<char*>(payload_);
+ boost::asio::ip::address_v4::bytes_type ip_octets;
+ for(int i=0; i<4; i++) {
+ ip_octets[i]=hdr[4*4+i];
+ }
+ return NetworkAddress(boost::asio::ip::address_v4(ip_octets));
+ } else if(type == PAYLOAD_TYPE_TUN6) { // IPv6
+ if(length_ < (sizeof(payload_type_t)+2*16+2*4)) {
+ return NetworkAddress();
+ }
+ char* hdr = reinterpret_cast<char*>(payload_);
+ boost::asio::ip::address_v6::bytes_type ip_octets;
+ for(int i=0; i<16; i++) {
+ ip_octets[i]=hdr[2*4+16+i];
+ }
+ return NetworkAddress(boost::asio::ip::address_v6(ip_octets));
+ }
+ return NetworkAddress();