libspf2  1.2.10
spf_dns_null.c
Go to the documentation of this file.
1 /*
2  * This program is free software; you can redistribute it and/or modify
3  * it under the terms of either:
4  *
5  * a) The GNU Lesser General Public License as published by the Free
6  * Software Foundation; either version 2.1, or (at your option) any
7  * later version,
8  *
9  * OR
10  *
11  * b) The two-clause BSD license.
12  *
13  * These licenses can be found with the distribution in the file LICENSES
14  */
15 
16 #include "spf_sys_config.h"
17 
18 
19 #ifdef STDC_HEADERS
20 # include <stdio.h> /* stdin / stdout */
21 # include <stdlib.h> /* malloc / free */
22 #endif
23 
24 #ifdef HAVE_STRING_H
25 # include <string.h> /* strstr / strdup */
26 #else
27 # ifdef HAVE_STRINGS_H
28 # include <strings.h> /* strstr / strdup */
29 # endif
30 #endif
31 
32 
33 
34 #include "spf.h"
35 #include "spf_dns.h"
36 #include "spf_internal.h"
37 #include "spf_dns_internal.h"
38 #include "spf_dns_null.h"
39 
40 
41 static SPF_dns_rr_t *
42 SPF_dns_null_lookup(SPF_dns_server_t *spf_dns_server,
43  const char *domain, ns_type rr_type, int should_cache)
44 {
45  if (spf_dns_server->layer_below)
46  return SPF_dns_lookup(spf_dns_server->layer_below,
47  domain, rr_type, should_cache);
48  return SPF_dns_rr_new_nxdomain(spf_dns_server, domain);
49 }
50 
51 static void
52 SPF_dns_null_free( SPF_dns_server_t *spf_dns_server )
53 {
54  SPF_ASSERT_NOTNULL(spf_dns_server);
55  free(spf_dns_server);
56 }
57 
58 SPF_dns_server_t *
59 SPF_dns_null_new(SPF_dns_server_t *spf_dns_server_below,
60  const char *name, int debug)
61 {
62  SPF_dns_server_t *spf_dns_server;
63 
64  spf_dns_server = malloc(sizeof(SPF_dns_server_t));
65  if ( spf_dns_server == NULL )
66  return NULL;
67  memset(spf_dns_server, 0, sizeof(SPF_dns_server_t));
68 
69  if (name == NULL)
70  name = "null";
71 
72  spf_dns_server->destroy = SPF_dns_null_free;
73  spf_dns_server->lookup = SPF_dns_null_lookup;
74  spf_dns_server->get_spf = NULL;
75  spf_dns_server->get_exp = NULL;
76  spf_dns_server->add_cache = NULL;
77  spf_dns_server->layer_below = spf_dns_server_below;
78  spf_dns_server->name = name;
79  spf_dns_server->debug = debug;
80 
81  return spf_dns_server;
82 }
#define debug
SPF_dns_server_t * SPF_dns_null_new(SPF_dns_server_t *spf_dns_server_below, const char *name, int debug)
Definition: spf_dns_null.c:59
#define NULL
Definition: spf_internal.h:28
#define SPF_ASSERT_NOTNULL(x)
Definition: spf_log.h:118
SPF_dns_rr_t * SPF_dns_lookup(SPF_dns_server_t *spf_dns_server, const char *domain, ns_type rr_type, int should_cache)
Definition: spf_dns.c:133
int ns_type
Definition: spf_dns.h:85
SPF_dns_rr_t * SPF_dns_rr_new_nxdomain(SPF_dns_server_t *spf_dns_server, const char *domain)
Definition: spf_dns_rr.c:53