blob: edb7dbb71fe3b93d4bf72a5d7664f271f3a2a8ed [file] [log] [blame]
#include "aos/util/inet_addr.h"
#include <stdlib.h>
#ifndef __VXWORKS__
#include <string.h>
#include "aos/byteorder.h"
#else
template<typename T>
T hton(T);
template<uint32_t>
uint32_t hton(uint32_t v) { return v; }
#endif
namespace aos {
namespace util {
const char *MakeIPAddress(const in_addr &base_address,
::aos::NetworkAddress last_segment) {
in_addr address = base_address;
SetLastSegment(&address, last_segment);
#ifdef __VXWORKS__
char *r = static_cast<char *>(malloc(INET_ADDR_LEN));
inet_ntoa_b(address, r);
return r;
#else
return strdup(inet_ntoa(address));
#endif
}
void SetLastSegment(in_addr *address, ::aos::NetworkAddress last_segment) {
address->s_addr &= ~(hton<uint32_t>(0xFF));
address->s_addr |= hton<uint32_t>(static_cast<uint8_t>(last_segment));
}
} // namespace util
} // namespace aos