Imported Upstream version 878.70.2
[platform/upstream/mdnsresponder.git] / mDNSMacOSX / BonjourTop / source / bjIPAddr.h
1 //
2 //  bjIPAddr.h
3 //  TestTB
4 //
5 //  Created by Terrin Eager on 1/19/13.
6 //
7 //
8
9 #ifndef __TestTB__bjIPAddr__
10 #define __TestTB__bjIPAddr__
11
12 #include <iostream>
13 #include <sys/socket.h>
14 #include "bjtypes.h"
15
16 class BJIPAddr
17 {
18 public:
19     BJIPAddr();
20     BJIPAddr(const BJIPAddr& src);
21
22     void Empty();
23
24     bool IsBonjourMulticast();
25     bool IsSameSubNet(BJIPAddr* addr);
26
27     bool IsIPv4();
28     bool IsIPv6();
29     bool IsIPv6LinkLocal();
30     bool IsEmpty();
31     bool IsEmptySubnet();
32
33     void Set(const char* addr);
34     void Setv6(const char* addr);
35     void Set(struct in6_addr* ipi6_addr);
36     void Set(struct in_addr* ip_addr);
37     void Set(struct sockaddr_storage* sockStorage);
38     void Setv4Raw(BJ_UINT8* ipi4_addr);
39     void Setv6Raw(BJ_UINT8* ipi6_addr);
40
41     sockaddr_storage* GetRawValue();
42     struct in6_addr* Getin6_addr();
43
44     void CreateLinkLocalIPv6(BJ_UINT8* mac);
45     BJ_COMPARE Compare(BJIPAddr* addr);
46     BJ_UINT16 GetPortNumber();
47     char* GetString();
48 private:
49     sockaddr_storage sockAddrStorage;
50     BJ_INT32 IPv4SubNet;
51     char stringbuffer[100];
52     static sockaddr_storage emptySockAddrStorage;
53 };
54
55
56 #endif /* defined(__TestTB__bjIPAddr__) */