Skip to content

Commit

Permalink
Allow to specify a custom port for DNS server.
Browse files Browse the repository at this point in the history
  • Loading branch information
vstakhov committed Feb 12, 2014
1 parent 3cfd948 commit d3e3bfe
Show file tree
Hide file tree
Showing 6 changed files with 24 additions and 14 deletions.
8 changes: 5 additions & 3 deletions include/rdns.h
Original file line number Diff line number Diff line change
Expand Up @@ -23,9 +23,10 @@
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/

#ifndef Rdns_H
#define Rdns_H
#ifndef RDNS_H
#define RDNS_H

#include <sys/types.h>
#include <stddef.h>
#include <stdint.h>
#include <stdbool.h>
Expand Down Expand Up @@ -170,7 +171,8 @@ void rdns_resolver_async_bind (struct rdns_resolver *resolver,
* @return true if a server has been added to resolver
*/
bool rdns_resolver_add_server (struct rdns_resolver *resolver,
const char *name, int priority, unsigned int io_cnt);
const char *name, unsigned int port,
int priority, unsigned int io_cnt);

/**
* Register new plugin for rdns resolver
Expand Down
2 changes: 1 addition & 1 deletion src/curve.c
Original file line number Diff line number Diff line change
Expand Up @@ -385,7 +385,7 @@ rdns_curve_recv (struct rdns_io_channel *ioc, void *buf, size_t len, void *plugi
*req_out = creq->req;
}
else {
DNS_DEBUG ("rdns_curve_recv: unable open cryptobox of size %d", boxlen);
DNS_DEBUG ("rdns_curve_recv: unable open cryptobox of size %d", (int)boxlen);
}
free (box);
}
Expand Down
2 changes: 2 additions & 0 deletions src/dns_private.h
Original file line number Diff line number Diff line change
Expand Up @@ -56,6 +56,8 @@ static const int dns_port = 53;
struct rdns_server {
char *name; /**< name of DNS server */

unsigned int port;

struct rdns_io_channel *io_channels;
struct rdns_io_channel *cur_io_channel;

Expand Down
9 changes: 7 additions & 2 deletions src/resolver.c
Original file line number Diff line number Diff line change
Expand Up @@ -479,7 +479,7 @@ rdns_resolver_init (struct rdns_resolver *resolver)
UPSTREAM_FOREACH (resolver->servers, serv) {
for (i = 0; i < serv->io_cnt; i ++) {
ioc = calloc (1, sizeof (struct rdns_io_channel));
ioc->sock = rdns_make_client_socket (serv->name, dns_port, SOCK_DGRAM);
ioc->sock = rdns_make_client_socket (serv->name, serv->port, SOCK_DGRAM);
if (ioc->sock == -1) {
return false;
}
Expand Down Expand Up @@ -520,7 +520,8 @@ rdns_resolver_register_plugin (struct rdns_resolver *resolver,

bool
rdns_resolver_add_server (struct rdns_resolver *resolver,
const char *name, int priority, unsigned int io_cnt)
const char *name, unsigned int port,
int priority, unsigned int io_cnt)
{
struct rdns_server *serv;
union {
Expand All @@ -537,6 +538,9 @@ rdns_resolver_add_server (struct rdns_resolver *resolver,
if (io_cnt == 0) {
return false;
}
if (port == 0 || port > UINT16_MAX) {
return false;
}

serv = calloc (1, sizeof (struct rdns_server));
if (serv == NULL) {
Expand All @@ -549,6 +553,7 @@ rdns_resolver_add_server (struct rdns_resolver *resolver,
}

serv->io_cnt = io_cnt;
serv->port = port;

UPSTREAM_ADD (resolver->servers, serv, priority);

Expand Down
9 changes: 5 additions & 4 deletions test/dns_curve.c
Original file line number Diff line number Diff line change
Expand Up @@ -67,13 +67,14 @@ main (int argc, char **argv)
struct ev_loop *loop;
unsigned char *pk;
struct rdns_curve_ctx *curve;
unsigned int port;

if (argc != 3) {
fprintf (stderr, "Usage: dns_curve <server_ip> <server_pubkey>\n");
if (argc != 4) {
fprintf (stderr, "Usage: dns_curve <server_ip> <server_port> <server_pubkey>\n");
exit (EXIT_FAILURE);
}

pk = rdns_curve_key_from_hex (argv[2]);
pk = rdns_curve_key_from_hex (argv[3]);
if (pk == NULL) {
fprintf (stderr, "Invalid public key: %s\n", argv[2]);
exit (EXIT_FAILURE);
Expand All @@ -93,7 +94,7 @@ main (int argc, char **argv)
rdns_curve_ctx_add_key (curve, argv[1], pk);
rdns_curve_register_plugin (resolver_ev, curve);

rdns_resolver_add_server (resolver_ev, argv[1], 0, 8);
rdns_resolver_add_server (resolver_ev, argv[1], strtoul (argv[2], NULL, 10), 0, 8);

rdns_resolver_init (resolver_ev);

Expand Down
8 changes: 4 additions & 4 deletions test/dns_regress.c
Original file line number Diff line number Diff line change
Expand Up @@ -71,13 +71,13 @@ main (int argc, char **argv)
resolver_ev = rdns_resolver_new ();
rdns_bind_libev (resolver_ev, loop);
/* Google and opendns */
rdns_resolver_add_server (resolver_ev, "8.8.8.8", 0, 8);
rdns_resolver_add_server (resolver_ev, "208.67.222.222", 0, 1);
rdns_resolver_add_server (resolver_ev, "8.8.8.8", 53, 0, 8);
rdns_resolver_add_server (resolver_ev, "208.67.222.222", 53, 0, 1);

resolver_event = rdns_resolver_new ();
rdns_bind_libevent (resolver_event, base);
rdns_resolver_add_server (resolver_event, "208.67.222.222", 0, 8);
rdns_resolver_add_server (resolver_event, "8.8.8.8", 0, 1);
rdns_resolver_add_server (resolver_event, "208.67.222.222", 53, 0, 8);
rdns_resolver_add_server (resolver_event, "8.8.8.8", 53, 0, 1);

rdns_resolver_init (resolver_ev);
rdns_resolver_init (resolver_event);
Expand Down

0 comments on commit d3e3bfe

Please sign in to comment.