blob: f202f6e218afb4e9b56324618b09a3293a2f033f [file] [log] [blame]
Brianc1dc7d22014-04-02 12:21:08 -07001#include "aos/common/util/inet_addr.h"
Brian Silverman66f079a2013-08-26 16:24:30 -07002
3#include <stdlib.h>
4#ifndef __VXWORKS__
5#include <string.h>
6#endif
7
Brian Silvermanf02c3982014-04-21 22:04:41 -07008#include "aos/common/byteorder.h"
9
Brian Silverman66f079a2013-08-26 16:24:30 -070010namespace aos {
11namespace util {
12
13const char *MakeIPAddress(const in_addr &base_address,
14 ::aos::NetworkAddress last_segment) {
15 in_addr address = base_address;
16 SetLastSegment(&address, last_segment);
17
18#ifdef __VXWORKS__
19 char *r = static_cast<char *>(malloc(INET_ADDR_LEN));
20 inet_ntoa_b(address, r);
21 return r;
22#else
23 return strdup(inet_ntoa(address));
24#endif
25}
26
27void SetLastSegment(in_addr *address, ::aos::NetworkAddress last_segment) {
Brian Silvermanf02c3982014-04-21 22:04:41 -070028 address->s_addr &= ~(hton<uint32_t>(0xFF));
29 address->s_addr |= hton<uint32_t>(static_cast<uint8_t>(last_segment));
Brian Silverman66f079a2013-08-26 16:24:30 -070030}
31
32} // namespace util
33} // namespace aos