From 8b2f04c2ea7c3b12cb7241f80067da142a58cf00 Mon Sep 17 00:00:00 2001 From: df Date: Sun, 19 Jul 2020 19:38:23 +0000 Subject: [PATCH] Tweak --- testmdnsd.c | 112 +++++++++++++++++++++++++++++++++------------------- 1 file changed, 72 insertions(+), 40 deletions(-) diff --git a/testmdnsd.c b/testmdnsd.c index ebe607d..89652cc 100644 --- a/testmdnsd.c +++ b/testmdnsd.c @@ -37,61 +37,93 @@ #endif #include +#include +#include +#include +#include +#include + #include "mdns.h" #include "mdnsd.h" -int main(int argc, char *argv[]) { - // create host entries - char *hostname = "some-random-host.local"; +void +background() +{ + int fd; + + switch ((int)fork()) + { + case -1: + perror("fork"); + exit(1); + case 0: + break; + default: + exit(0); + } + + #ifdef TIOCNOTTY + if (ioctl(fileno(stdin), TIOCNOTTY) == -1) + perror("detach_console"); + #endif + freopen("/dev/null", "r", stdin); + + fd = open("/dev/null", O_WRONLY, 0666); + dup2(fd, fileno(stdout)); + dup2(fd, fileno(stderr)); + close(fd); + + setsid(); +} + +int +main(int argc, char **argv) +{ + char hostname[0x100], ifname[0x100]; + struct hostent *hp; + struct in_addr saddr; + + if (gethostname(hostname, sizeof(hostname) - 1) == -1) + { + printf("Couldn't retrieve humax hostname.\n"); + return 1; + } + + if (!(hp = gethostbyname(hostname))) + { + printf("Couldn't retrieve humax IP address.\n"); + return 1; + } + memmove((char *)&saddr.s_addr, (char *)hp->h_addr, + sizeof(saddr.s_addr)); + printf("Hostname: %s (%s)\n", hostname, inet_ntoa(saddr)); struct mdnsd *svr = mdnsd_start(); if (svr == NULL) { printf("mdnsd_start() error\n"); return 1; } + printf("Started MDNS Service\n"); - printf("mdnsd_start OK. press ENTER to add hostname & service\n"); - getchar(); + mdnsd_set_hostname(svr, hostname, saddr.s_addr); - mdnsd_set_hostname(svr, hostname, inet_addr("192.168.0.29")); - - struct rr_entry *a2_e = NULL; - a2_e = rr_create_a(create_nlabel(hostname), inet_addr("192.168.0.31")); - mdnsd_add_rr(svr, a2_e); - - struct rr_entry *aaaa_e = NULL; - - struct addrinfo hints; - memset(&hints, 0, sizeof(hints)); - hints.ai_family = AF_INET6; - hints.ai_flags = AI_NUMERICHOST; - struct addrinfo* results; - getaddrinfo( - "fe80::e2f8:47ff:fe20:28e0", - NULL, - &hints, - &results); - struct sockaddr_in6* addr = (struct sockaddr_in6*)results->ai_addr; - struct in6_addr v6addr = addr->sin6_addr; - freeaddrinfo(results); - - aaaa_e = rr_create_aaaa(create_nlabel(hostname), &v6addr); - - mdnsd_add_rr(svr, aaaa_e); + sprintf(ifname, "Humax Fox T2 (%s) Web Interface", hostname); const char *txt[] = { - "path=/mywebsite", - NULL - }; - struct mdns_service *svc = mdnsd_register_svc(svr, "My Website", - "_http._tcp.local", 8080, NULL, txt); - mdns_service_destroy(svc); + "path=/", + NULL + }; + struct mdns_service *svc = mdnsd_register_svc( + svr, ifname, "_http._tcp.local", 80, + NULL, txt); + //mdns_service_destroy(svc); - printf("added service and hostname. press ENTER to exit\n"); - getchar(); + printf("Registered name.\n"); - mdnsd_stop(svr); + for (;;) + sleep(3600); + + // mdnsd_stop(svr); return 0; } -