summaryrefslogtreecommitdiffstats
path: root/rtemsbsd/mdns/mdns.c
diff options
context:
space:
mode:
Diffstat (limited to 'rtemsbsd/mdns/mdns.c')
-rw-r--r--rtemsbsd/mdns/mdns.c25
1 files changed, 24 insertions, 1 deletions
diff --git a/rtemsbsd/mdns/mdns.c b/rtemsbsd/mdns/mdns.c
index 425c1276..2248e5b0 100644
--- a/rtemsbsd/mdns/mdns.c
+++ b/rtemsbsd/mdns/mdns.c
@@ -275,7 +275,7 @@ truncate_at_first_dot(domainlabel *name)
name->c[0] = n;
}
-static void
+static int
mdns_sethostname(const char *hostname)
{
mDNS *m = &mDNSStorage;
@@ -290,6 +290,28 @@ mdns_sethostname(const char *hostname)
mDNS_SetFQDN(m);
rtems_bsd_force_select_timeout(mdns_daemon_id);
+
+ return (0);
+}
+
+static int
+mdns_gethostname(char *hostname, size_t size)
+{
+ mDNS *m = &mDNSStorage;
+
+ if (size < MAX_ESCAPED_DOMAIN_LABEL) {
+ errno = ERANGE;
+
+ return (-1);
+ }
+
+ mDNS_Lock(m);
+
+ ConvertDomainLabelToCString(&m->hostlabel, hostname);
+
+ mDNS_Unlock(m);
+
+ return (0);
}
rtems_status_code
@@ -343,6 +365,7 @@ rtems_mdns_initialize(rtems_task_priority daemon_priority,
}
rtems_mdns_sethostname_handler = mdns_sethostname;
+ rtems_mdns_gethostname_handler = mdns_gethostname;
return (RTEMS_SUCCESSFUL);
}