summaryrefslogtreecommitdiff
path: root/mDNSResponder/mDNSMacOSX/BonjourTop/source/bjIPAddr.h
blob: 579355a69b569a49ce288106cd7abcd2d5395308 (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
//
//  bjIPAddr.h
//  TestTB
//
//  Created by Terrin Eager on 1/19/13.
//
//

#ifndef __TestTB__bjIPAddr__
#define __TestTB__bjIPAddr__

#include <iostream>
#include <sys/socket.h>
#include "bjtypes.h"

class BJIPAddr
{
public:
    BJIPAddr();
    BJIPAddr(const BJIPAddr& src);

    void Empty();

    bool IsBonjourMulticast();
    bool IsSameSubNet(BJIPAddr* addr);

    bool IsIPv4();
    bool IsIPv6();
    bool IsIPv6LinkLocal();
    bool IsEmpty();
    bool IsEmptySubnet();

    void Set(const char* addr);
    void Setv6(const char* addr);
    void Set(struct in6_addr* ipi6_addr);
    void Set(struct in_addr* ip_addr);
    void Set(struct sockaddr_storage* sockStorage);
    void Setv4Raw(BJ_UINT8* ipi4_addr);
    void Setv6Raw(BJ_UINT8* ipi6_addr);

    sockaddr_storage* GetRawValue();
    struct in6_addr* Getin6_addr();

    void CreateLinkLocalIPv6(BJ_UINT8* mac);
    BJ_COMPARE Compare(BJIPAddr* addr);
    BJ_UINT16 GetPortNumber();
    char* GetString();
private:
    sockaddr_storage sockAddrStorage;
    BJ_INT32 IPv4SubNet;
    char stringbuffer[100];
    static sockaddr_storage emptySockAddrStorage;
};


#endif /* defined(__TestTB__bjIPAddr__) */