Perform host domain lookup in t_dnssrv.c
Added gethostdomain()
Modified test to use gethostdomain() for domain lookup
Modified test to do SRV lookup for _matahari._tcp as per Bug# 688199
Signed-off-by: Antoine van Gelder <antoine(a)7degrees.co.za>
---
src/tests/t_dnssrv.c | 52 ++++++++++++++++++++++++++++++++++++++++++++++++-
1 files changed, 50 insertions(+), 2 deletions(-)
diff --git a/src/tests/t_dnssrv.c b/src/tests/t_dnssrv.c
index 91b2772..855a6f3 100644
--- a/src/tests/t_dnssrv.c
+++ b/src/tests/t_dnssrv.c
@@ -16,22 +16,70 @@
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
*/
+#include <sys/utsname.h>
+#include <netdb.h>
+#include <string.h>
+#include <stdio.h>
#include <glib.h>
#include "dnssrv_private.h"
+
+int
+gethostdomain(char* domain, size_t domainlen)
+{
+ struct utsname sysinfo;
+ struct addrinfo hints, *res, *p;
+ int error;
+ char* offset;
+
+ if (uname(&sysinfo) != 0) {
+ return -1;
+ }
+
+ memset(&hints, 0, sizeof(hints));
+ hints.ai_family = AF_UNSPEC;
+ hints.ai_socktype = SOCK_STREAM;
+ hints.ai_flags = AI_CANONNAME;
+
+ if ((error = getaddrinfo(sysinfo.nodename, NULL, &hints, &res)) != 0) {
+ printf("warning: %s", gai_strerror(error));
+ goto fail;
+ }
+
+ /* strip host from fqdn */
+ if ((offset = strchr(res->ai_canonname, '.')) == NULL) {
+ goto fail;
+ }
+ strncpy(domain, ++offset, domainlen);
+ freeaddrinfo(res);
+
+ return 0;
+
+fail:
+ freeaddrinfo(res);
+ return -1;
+}
+
+
int main(int argc, char **argv)
{
struct srv_reply **srvl = NULL, *srv = NULL;
int i;
- if (srvl = srv_lookup("qpid-broker", "tcp", "qpid-broker:49000")) {
+ char hostdomain[MAX_NAME_LEN];
+ if (gethostdomain(hostdomain, sizeof hostdomain) != 0) {
+ perror("Could not determine host domain");
+ return 0;
+ }
+
+ if (srvl = srv_lookup("matahari", "tcp", hostdomain)) {
srv = *srvl;
for (i = 1; srvl[i]; i++) {
if (srvl[i]->prio < srv->prio)
srv = srvl[i];
}
- fprintf("\tAccessible QPID Broker: %s\n", srv->name);
+ printf("\tAccessible QPID Broker: %s\n", srv->name);
return 0;
}
return -1;
--
1.7.5.2