summaryrefslogtreecommitdiffstats
path: root/lanbrowsing/lisa/ipaddress.cpp
blob: 8dc981949c214fdcb71ac03f08d8fc21352de700 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
/*    ipaddress.cpp
 *
 *    Copyright (c) 1998, 1999, Alexander Neundorf, Lukas Pustina
 *    [email protected]
 *    [email protected]
 *
 *    You may distribute under the terms of the GNU General Public
 *    License as specified in the COPYING file.
 *
 *    This program is distributed in the hope that it will be useful,
 *    but WITHOUT ANY WARRANTY; without even the implied warranty of
 *    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 *    GNU General Public License for more details.
 *
 */

#include "ipaddress.h"

#include <iostream>

IPAddress::IPAddress()
{
}

IPAddress::IPAddress(const MyString& ip)
{
   if (ip.length()==0)
      s="0.0.0.0";
   else s=ip;
   i=string2Int(s);
   n=string2Struct(s);
}

IPAddress::IPAddress(unsigned int ip)
{
   i=ip;
   s=int2String(i);
   n.s_addr=htonl(i);
   //n=string2Struct(s);
}

IPAddress::IPAddress(struct in_addr ip)
{
   n=ip;
   s=struct2String(n);
   i=string2Int(s);
}

IPAddress::IPAddress(int b1, int b2, int b3, int b4)
{
   char tmp[30];
   sprintf(tmp,"%i.%i.%i.%i",b1,b2,b3,b4);
   s=tmp;
   i=string2Int(s);
   n=string2Struct(s);
}


MyString IPAddress::int2String(unsigned int ip)
{
   MyString tmp("");
   struct in_addr addr;
   addr.s_addr=htonl(ip);
   tmp=inet_ntoa(addr);
   return tmp;
}

MyString IPAddress::struct2String(struct in_addr ip)
{
   return MyString(inet_ntoa(ip));
}

unsigned int IPAddress::string2Int(MyString ip)
{
//   struct in_addr addr;
//   inet_aton(ip.c_str(),&addr);
//   cout<<addr.s_addr<<endl;
//   return ntohl(addr.s_addr);
   return ntohl(inet_addr(ip.c_str()));
}

struct in_addr IPAddress::string2Struct(MyString ip)
{
   struct in_addr tmp;
//   inet_aton(ip.c_str(),&tmp);
   tmp.s_addr = inet_addr(ip.c_str());
   return tmp;
}

void IPAddress::print()
{
   std::cout<<"address as string: "<<s<<std::endl;
   std::cout<<"address in host byte order:    "<<std::ios::hex<<i<<std::ios::dec<<std::endl;
   std::cout<<"address in network byte order: "<<std::ios::hex<<n.s_addr<<std::ios::dec<<std::endl;
}