nslookup: simplify make_ptr
function old new delta nslookup_main 2644 2611 -33 Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
This commit is contained in:
parent
71e4b3f482
commit
c72499584a
@ -484,40 +484,6 @@ static int parse_reply(const unsigned char *msg, size_t len)
|
|||||||
return i;
|
return i;
|
||||||
}
|
}
|
||||||
|
|
||||||
static char *make_ptr(char resbuf[80], const char *addrstr)
|
|
||||||
{
|
|
||||||
unsigned char addr[16];
|
|
||||||
int i;
|
|
||||||
|
|
||||||
#if ENABLE_FEATURE_IPV6
|
|
||||||
if (inet_pton(AF_INET6, addrstr, addr)) {
|
|
||||||
if (memcmp(addr, v4_mapped, 12) != 0) {
|
|
||||||
char *ptr = resbuf;
|
|
||||||
for (i = 0; i < 16; i++) {
|
|
||||||
*ptr++ = 0x20 | bb_hexdigits_upcase[(unsigned char)addr[15 - i] & 0xf];
|
|
||||||
*ptr++ = '.';
|
|
||||||
*ptr++ = 0x20 | bb_hexdigits_upcase[(unsigned char)addr[15 - i] >> 4];
|
|
||||||
*ptr++ = '.';
|
|
||||||
}
|
|
||||||
strcpy(ptr, "ip6.arpa");
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
sprintf(resbuf, "%u.%u.%u.%u.in-addr.arpa",
|
|
||||||
addr[15], addr[14], addr[13], addr[12]);
|
|
||||||
}
|
|
||||||
return resbuf;
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
|
|
||||||
if (inet_pton(AF_INET, addrstr, addr)) {
|
|
||||||
sprintf(resbuf, "%u.%u.%u.%u.in-addr.arpa",
|
|
||||||
addr[3], addr[2], addr[1], addr[0]);
|
|
||||||
return resbuf;
|
|
||||||
}
|
|
||||||
|
|
||||||
return NULL;
|
|
||||||
}
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Function logic borrowed & modified from musl libc, res_msend.c
|
* Function logic borrowed & modified from musl libc, res_msend.c
|
||||||
* G.query_count is always > 0.
|
* G.query_count is always > 0.
|
||||||
@ -743,6 +709,38 @@ static void add_query(int type, const char *dname)
|
|||||||
new_q->qlen = qlen;
|
new_q->qlen = qlen;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static char *make_ptr(const char *addrstr)
|
||||||
|
{
|
||||||
|
unsigned char addr[16];
|
||||||
|
int i;
|
||||||
|
|
||||||
|
#if ENABLE_FEATURE_IPV6
|
||||||
|
if (inet_pton(AF_INET6, addrstr, addr)) {
|
||||||
|
if (memcmp(addr, v4_mapped, 12) != 0) {
|
||||||
|
char resbuf[80];
|
||||||
|
char *ptr = resbuf;
|
||||||
|
for (i = 0; i < 16; i++) {
|
||||||
|
*ptr++ = 0x20 | bb_hexdigits_upcase[(unsigned char)addr[15 - i] & 0xf];
|
||||||
|
*ptr++ = '.';
|
||||||
|
*ptr++ = 0x20 | bb_hexdigits_upcase[(unsigned char)addr[15 - i] >> 4];
|
||||||
|
*ptr++ = '.';
|
||||||
|
}
|
||||||
|
strcpy(ptr, "ip6.arpa");
|
||||||
|
return xstrdup(resbuf);
|
||||||
|
}
|
||||||
|
return xasprintf("%u.%u.%u.%u.in-addr.arpa",
|
||||||
|
addr[15], addr[14], addr[13], addr[12]);
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
|
if (inet_pton(AF_INET, addrstr, addr)) {
|
||||||
|
return xasprintf("%u.%u.%u.%u.in-addr.arpa",
|
||||||
|
addr[3], addr[2], addr[1], addr[0]);
|
||||||
|
}
|
||||||
|
|
||||||
|
return NULL;
|
||||||
|
}
|
||||||
|
|
||||||
int nslookup_main(int argc, char **argv) MAIN_EXTERNALLY_VISIBLE;
|
int nslookup_main(int argc, char **argv) MAIN_EXTERNALLY_VISIBLE;
|
||||||
int nslookup_main(int argc UNUSED_PARAM, char **argv)
|
int nslookup_main(int argc UNUSED_PARAM, char **argv)
|
||||||
{
|
{
|
||||||
@ -843,11 +841,10 @@ int nslookup_main(int argc UNUSED_PARAM, char **argv)
|
|||||||
* mimicking the one of the traditional nslookup applet.
|
* mimicking the one of the traditional nslookup applet.
|
||||||
*/
|
*/
|
||||||
char *ptr;
|
char *ptr;
|
||||||
char buf80[80];
|
|
||||||
|
|
||||||
ptr = make_ptr(buf80, argv[0]);
|
ptr = make_ptr(argv[0]);
|
||||||
if (ptr) {
|
if (ptr) {
|
||||||
add_query(T_PTR, xstrdup(ptr));
|
add_query(T_PTR, ptr);
|
||||||
} else {
|
} else {
|
||||||
add_query(T_A, argv[0]);
|
add_query(T_A, argv[0]);
|
||||||
#if ENABLE_FEATURE_IPV6
|
#if ENABLE_FEATURE_IPV6
|
||||||
|
Loading…
x
Reference in New Issue
Block a user