NeoMutt  2023-05-17-33-gce4425
Teaching an old dog new tricks
DOXYGEN
getdomain.c File Reference

DNS lookups. More...

#include "config.h"
#include <assert.h>
#include <netdb.h>
#include <string.h>
#include <sys/socket.h>
#include <time.h>
#include <unistd.h>
#include "mutt/lib.h"
#include "lib.h"
+ Include dependency graph for getdomain.c:

Go to the source code of this file.

Functions

static struct addrinfo * mutt_getaddrinfo (const char *node, const struct addrinfo *hints)
 Lookup the host's name using getaddrinfo() More...
 
int getdnsdomainname (struct Buffer *result)
 Lookup the host's name using DNS. More...
 

Detailed Description

DNS lookups.

Authors
  • Derek Martin

This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.

You should have received a copy of the GNU General Public License along with this program. If not, see http://www.gnu.org/licenses/.

Definition in file getdomain.c.

Function Documentation

◆ mutt_getaddrinfo()

static struct addrinfo * mutt_getaddrinfo ( const char *  node,
const struct addrinfo *  hints 
)
static

Lookup the host's name using getaddrinfo()

Parameters
nodeHostname, got by gethostname()
hintsFlags to pass to getaddrinfo()
Return values
ptrAddress info
NULLError
Note
Caller must free result

Definition at line 100 of file getdomain.c.

101{
102 assert(node);
103 assert(hints);
104 struct addrinfo *result = NULL;
105 mutt_debug(LL_DEBUG3, "before getaddrinfo\n");
106 int rc = getaddrinfo(node, NULL, hints, &result);
107 mutt_debug(LL_DEBUG3, "after getaddrinfo\n");
108
109 if (rc != 0)
110 result = NULL;
111
112 return result;
113}
#define mutt_debug(LEVEL,...)
Definition: logging2.h:84
@ LL_DEBUG3
Log at debug level 3.
Definition: logging2.h:42
+ Here is the caller graph for this function:

◆ getdnsdomainname()

int getdnsdomainname ( struct Buffer result)

Lookup the host's name using DNS.

Parameters
resultBuffer were result of the domain name lookup will be stored
Return values
0Success
-1Error

Definition at line 122 of file getdomain.c.

123{
124 assert(result);
125 int rc = -1;
126
127#if defined(HAVE_GETADDRINFO) || defined(HAVE_GETADDRINFO_A)
128 char node[256] = { 0 };
129 if (gethostname(node, sizeof(node)) != 0)
130 return rc;
131
132 struct addrinfo *lookup_result = NULL;
133 struct addrinfo hints;
134
135 buf_reset(result);
136 memset(&hints, 0, sizeof(struct addrinfo));
137 hints.ai_flags = AI_CANONNAME;
138 hints.ai_family = AF_UNSPEC;
139
140#ifdef HAVE_GETADDRINFO_A
141 lookup_result = mutt_getaddrinfo_a(node, &hints);
142#else
143 lookup_result = mutt_getaddrinfo(node, &hints);
144#endif
145
146 if (lookup_result && lookup_result->ai_canonname)
147 {
148 const char *hostname = strchr(lookup_result->ai_canonname, '.');
149 if (hostname && hostname[1] != '\0')
150 {
151 buf_strcpy(result, ++hostname);
152 rc = 0;
153 }
154 }
155
156 if (lookup_result)
157 freeaddrinfo(lookup_result);
158#endif
159
160 return rc;
161}
void buf_reset(struct Buffer *buf)
Reset an existing Buffer.
Definition: buffer.c:86
size_t buf_strcpy(struct Buffer *buf, const char *s)
Copy a string into a Buffer.
Definition: buffer.c:370
static struct addrinfo * mutt_getaddrinfo(const char *node, const struct addrinfo *hints)
Lookup the host's name using getaddrinfo()
Definition: getdomain.c:100
+ Here is the call graph for this function:
+ Here is the caller graph for this function: