root/trunk/pdns/modules/ldapbackend/utils.hh @ 235

Revision 235, 1.6 KB (checked in by ahu, 9 years ago)

LDAP fixes, temporary gebackend removal

  • Property svn:eol-style set to native
  • Property svn:keywords set to author date id revision
Line 
1#include <string>
2#include <vector>
3#include <pdns/misc.hh>
4
5
6#ifndef LDAPBACKEND_UTILS_HH
7#define LDAPBACKEND_UTILS_HH
8
9using std::string;
10using std::vector;
11
12
13inline string ptr2ip4( vector<string>& parts )
14{
15        string ip;
16        parts.pop_back();
17        parts.pop_back();
18
19
20        ip = parts.back();
21        parts.pop_back();
22
23        while( !parts.empty() )
24        {
25                ip += "." + parts.back();
26                parts.pop_back();
27        }
28
29        return ip;
30}
31
32
33inline string ptr2ip6( vector<string>& parts )
34{
35        int i = 0;
36        string ip;
37
38
39        parts.pop_back();
40        parts.pop_back();
41
42        while( i < 3 && parts.size() > 1 && parts.back() == "0" )
43        {
44                parts.pop_back();
45                i++;
46        }
47
48        while( i++ < 4 && !parts.empty() )
49        {
50                ip += parts.back();
51                parts.pop_back();
52        }
53
54        while( !parts.empty() )
55        {
56                i = 0;
57                ip += ":";
58
59                while( i < 3 && parts.size() > 1 && parts.back() == "0" )
60                {
61                        parts.pop_back();
62                        i++;
63                }
64
65                while( i++ < 4 && !parts.empty() )
66                {
67                        ip += parts.back();
68                        parts.pop_back();
69                }
70        }
71
72        return ip;
73}
74
75
76inline string ip2ptr4( string ip )
77{
78        string ptr;
79        vector<string> parts;
80
81        stringtok( parts, ip, "." );
82        while( !parts.empty() )
83        {
84                ptr += parts.back() +  ".";
85                parts.pop_back();
86        }
87
88        return ptr + "in-addr.arpa";
89}
90
91
92inline string ip2ptr6( string ip )
93{
94        string ptr, part, defstr;
95        vector<string> parts;
96
97        stringtok( parts, ip, ":" );
98        while( !parts.empty() )
99        {
100                defstr = "0.0.0.0.";
101                part = parts.back();
102
103                while( part.length() < 4 )
104                {
105                        part = "0" + part;
106                }
107
108                defstr[0] = part[3];
109                defstr[2] = part[2];
110                defstr[4] = part[1];
111                defstr[6] = part[0];
112                ptr += defstr;
113                parts.pop_back();
114        }
115
116        return ptr + "ip6.arpa";
117}
118
119#endif
Note: See TracBrowser for help on using the browser.