summaryrefslogtreecommitdiffstats
path: root/rtemsbsd/mdns/mdns.c
diff options
context:
space:
mode:
authorSebastian Huber <sebastian.huber@embedded-brains.de>2014-11-10 08:27:32 +0100
committerSebastian Huber <sebastian.huber@embedded-brains.de>2014-11-10 08:28:38 +0100
commit026abfb7ae8475987626dab4c600821c66e628c0 (patch)
tree6ed2b06a620cec3e86ff0a20f884739e99920436 /rtemsbsd/mdns/mdns.c
parentDo not set mulitcast hostname in sethostname() (diff)
downloadrtems-libbsd-026abfb7ae8475987626dab4c600821c66e628c0.tar.bz2
Add rtems_mdns_gethostname()
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);
}