dns: add format_address function
This commit is contained in:
parent
f169fc8842
commit
1c99f551e3
2 changed files with 25 additions and 21 deletions
45
authd/dns.c
45
authd/dns.c
|
@ -22,6 +22,29 @@
|
||||||
#include "dns.h"
|
#include "dns.h"
|
||||||
#include "res.h"
|
#include "res.h"
|
||||||
|
|
||||||
|
void
|
||||||
|
format_address(struct rb_sockaddr_storage *addr, char *buffer, size_t length)
|
||||||
|
{
|
||||||
|
if(GET_SS_FAMILY(addr) == AF_INET)
|
||||||
|
{
|
||||||
|
rb_inet_ntop_sock((struct sockaddr *)addr, buffer, length);
|
||||||
|
}
|
||||||
|
else if(GET_SS_FAMILY(addr) == AF_INET6)
|
||||||
|
{
|
||||||
|
char tmpbuf[length];
|
||||||
|
|
||||||
|
rb_inet_ntop_sock((struct sockaddr *)addr, tmpbuf, length);
|
||||||
|
|
||||||
|
if(*tmpbuf == ':')
|
||||||
|
{
|
||||||
|
rb_strlcpy(buffer, "0", length);
|
||||||
|
rb_strlcat(buffer, tmpbuf, length);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
rb_strlcpy(buffer, tmpbuf, length);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
submit_dns_answer(void *userdata, struct DNSReply *reply)
|
submit_dns_answer(void *userdata, struct DNSReply *reply)
|
||||||
{
|
{
|
||||||
|
@ -38,29 +61,9 @@ submit_dns_answer(void *userdata, struct DNSReply *reply)
|
||||||
switch (req->type)
|
switch (req->type)
|
||||||
{
|
{
|
||||||
case '4':
|
case '4':
|
||||||
if (GET_SS_FAMILY(&reply->addr) == AF_INET)
|
|
||||||
{
|
|
||||||
status = 'O';
|
|
||||||
rb_inet_ntop_sock((struct sockaddr *) &reply->addr, response, sizeof(response));
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
#ifdef RB_IPV6
|
#ifdef RB_IPV6
|
||||||
case '6':
|
case '6':
|
||||||
if (GET_SS_FAMILY(&reply->addr) == AF_INET6)
|
format_address(&reply->addr, response, sizeof(response));
|
||||||
{
|
|
||||||
char tmpres[63];
|
|
||||||
rb_inet_ntop_sock((struct sockaddr *) &reply->addr, tmpres, sizeof(tmpres));
|
|
||||||
|
|
||||||
if (*tmpres == ':')
|
|
||||||
{
|
|
||||||
rb_strlcpy(response, "0", sizeof(response));
|
|
||||||
rb_strlcat(response, tmpres, sizeof(response));
|
|
||||||
}
|
|
||||||
else
|
|
||||||
rb_strlcpy(response, tmpres, sizeof(response));
|
|
||||||
|
|
||||||
status = 'O';
|
|
||||||
}
|
|
||||||
break;
|
break;
|
||||||
#endif
|
#endif
|
||||||
case 'R':
|
case 'R':
|
||||||
|
|
|
@ -34,6 +34,7 @@ struct dns_request
|
||||||
char type;
|
char type;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
extern void format_address(struct rb_sockaddr_storage *addr, char *buffer, size_t length);
|
||||||
extern void resolve_dns(int parc, char *parv[]);
|
extern void resolve_dns(int parc, char *parv[]);
|
||||||
extern void enumerate_nameservers(const char *rid, const char letter);
|
extern void enumerate_nameservers(const char *rid, const char letter);
|
||||||
extern void reload_nameservers(const char letter);
|
extern void reload_nameservers(const char letter);
|
||||||
|
|
Loading…
Reference in a new issue