From 0b6b4e9921bce50e584f0922b5326c289368a467 Mon Sep 17 00:00:00 2001 From: Matias Fontanini Date: Fri, 23 Mar 2012 00:59:35 -0300 Subject: [PATCH] Fixed endianness in some DHCP options. --- src/dhcp.cpp | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/src/dhcp.cpp b/src/dhcp.cpp index a6895f1..9631b0a 100644 --- a/src/dhcp.cpp +++ b/src/dhcp.cpp @@ -122,11 +122,16 @@ bool Tins::DHCP::search_type_option(uint8_t *value) { } bool Tins::DHCP::add_server_identifier(uint32_t ip) { + ip = Utils::net_to_host_l(ip); return add_option(DHCP_SERVER_IDENTIFIER, sizeof(uint32_t), (const uint8_t*)&ip); } bool Tins::DHCP::search_server_identifier(uint32_t *value) { - return generic_search(DHCP_SERVER_IDENTIFIER, value); + if(generic_search(DHCP_SERVER_IDENTIFIER, value)) { + *value = Utils::net_to_host_l(*value); + return true; + } + return false; } bool Tins::DHCP::add_lease_time(uint32_t time) { @@ -207,7 +212,7 @@ uint8_t *Tins::DHCP::serialize_list(const list &int_list, uint32_t &sz uint8_t *buffer = new uint8_t[int_list.size() * sizeof(uint32_t)]; uint32_t *ptr = (uint32_t*)buffer; for(list::const_iterator it = int_list.begin(); it != int_list.end(); ++it) - *(ptr++) = *it; + *(ptr++) = Utils::net_to_host_l(*it); sz = sizeof(uint32_t) * int_list.size(); return buffer; }