djbdnscurve6
45
djbdnscurve6
Loading...
Searching...
No Matches
djbdnscurve6-45
src
dd.c
Go to the documentation of this file.
1
#include "
dns.h
"
2
#include "
dd.h
"
3
#include "ip.h"
4
#include "scan.h"
5
#include "
dns.h
"
6
7
int
dd4
(
const
char
*q,
const
char
*
base
,
char
ip
[4])
8
{
9
int
j;
10
unsigned
int
x
;
11
12
for
(j = 0;; ++j) {
13
if
(
dns_domain_equal
(q,
base
))
return
j;
14
if
(j >= 4)
return
-1;
15
16
if
(*q <= 0)
return
-1;
17
if
(*q >= 4)
return
-1;
18
if
((q[1] <
'0'
) || (q[1] >
'9'
))
return
-1;
19
x
= q[1] -
'0'
;
20
if
(*q == 1) {
21
ip
[j] =
x
;
22
q += 2;
23
continue
;
24
}
25
if
(!
x
)
return
-1;
26
if
((q[2] <
'0'
) || (q[2] >
'9'
))
return
-1;
27
x
=
x
* 10 + (q[2] -
'0'
);
28
if
(*q == 2) {
29
ip
[j] =
x
;
30
q += 3;
31
continue
;
32
}
33
if
((q[3] <
'0'
) || (q[3] >
'9'
))
return
-1;
34
x
=
x
* 10 + (q[3] -
'0'
);
35
if
(
x
> 255)
return
-1;
36
ip
[j] =
x
;
37
q += 4;
38
}
39
}
40
int
dd6
(
const
char
*q,
const
char
*
base
,
char
ip
[16])
41
{
42
int
j;
43
int
i;
44
unsigned
int
x
;
45
46
for
(j = 0 ;; ++j) {
47
if
(
dns_domain_equal
(q,
base
))
return
j;
48
if
(j > 15)
return
-1;
49
50
i = scan_xint(q++,&
x
);
51
if
(!i) { --j;
continue
; }
52
if
(
x
> 15)
return
-1;
53
ip
[j] =
x
<< 4;
54
q += i;
55
i = scan_xint(q++,&
x
);
56
if
(!i)
continue
;
57
if
(
x
> 15)
return
-1;
58
ip
[j] +=
x
;
59
q += i;
60
if
(j == 15) q--;
/* last character seen */
61
}
62
}
ip
char ip[16]
Definition:
axfrdns.c:125
dd6
int dd6(const char *q, const char *base, char ip[16])
Definition:
dd.c:40
dd4
int dd4(const char *q, const char *base, char ip[4])
Definition:
dd.c:7
dd.h
dns.h
dns_domain_equal
int dns_domain_equal(const char *dn1, const char *dn2)
Definition:
dns_domain.c:39
x
struct line * x
base
char * base
Definition:
rbldns-conf.c:20
Generated on Fri Aug 30 2024 11:58:34 for djbdnscurve6 by
1.9.6