[PATCH] Add MDNS configuration option
Jeremy Allison
jra at samba.org
Thu Dec 7 19:49:19 UTC 2017
On Wed, Dec 06, 2017 at 10:36:52AM +0100, Ralph Böhme via samba-technical wrote:
> On Wed, Dec 06, 2017 at 09:48:50AM +0100, Ralph Böhme wrote:
> > On Wed, Dec 06, 2017 at 01:42:07PM +1300, Andrew Bartlett wrote:
> > > On Tue, 2017-12-05 at 17:51 -0500, Kevin Anderson wrote:
> > > > Hi Ralph,
> > > >
> > > > > doesn't apply to master anymore. Can you please check and post an updated patch?
> > > > > Thanks!
> > > >
> > > > I've rebased the patch against current master.
> > > >
> > > > Thanks,
> > > > Kevin Anderson
> > >
> > > Reviewed-by: Andrew Bartlett <abartlet at samba.org>
> > >
> > > Ralph, or others: Can I get a second team reviewer please?
> >
> > pushed.
>
> failed with
>
> [1891/3176] Compiling source3/smbd/avahi_register.c
> ../source3/smbd/avahi_register.c: In function ‘avahi_client_callback’:
> ../source3/smbd/avahi_register.c:123:3: error: ISO C90 forbids mixed declarations and code [-Werror=declaration-after-statement]
> AvahiStringList *adisk = NULL;
> ^
> cc1: all warnings being treated as errors
>
> Updated patch attached.
>
> Please review & push if happy.
LGTM. Pushed !
Jeremy.
> --
> Ralph Boehme, Samba Team https://samba.org/
> Samba Developer, SerNet GmbH https://sernet.de/en/samba/
> From 5980731c48e53c3072b05d5cb5ca952a7d43151c Mon Sep 17 00:00:00 2001
> From: Kevin Anderson <andersonkw2 at gmail.com>
> Date: Sat, 25 Nov 2017 23:03:59 -0500
> Subject: [PATCH] Add mdns name configuration option
>
> Add the mdns name configuration variable to control the mdns hostname.
> The default is to use the NETBIOS name of the system to match previous
> versions which is typically the hostname in all capitals. A value of mdns
> can be provided to defer the hostname to the mdns library.
>
> With the recent patch to support time machine being merged this patch
> allows for a user to configure the server name that is advertised to
> be lower cased through Avahi advertisements.
>
> Signed-off-by: Kevin Anderson <andersonkw2 at gmail.com>
> Reviewed-by: Ralph Boehme <slow at samba.org>
> ---
> WHATSNEW.txt | 26 +++++++++++++++++++++++++-
> docs-xml/smbdotconf/base/mdnsname.xml | 19 +++++++++++++++++++
> lib/param/loadparm.c | 2 ++
> lib/param/loadparm.h | 3 +++
> lib/param/param_table.c | 6 ++++++
> source3/smbd/avahi_register.c | 18 ++++++++++++++++--
> 6 files changed, 71 insertions(+), 3 deletions(-)
> create mode 100644 docs-xml/smbdotconf/base/mdnsname.xml
>
> diff --git a/WHATSNEW.txt b/WHATSNEW.txt
> index 8f5986ec55e..007e5d914b0 100644
> --- a/WHATSNEW.txt
> +++ b/WHATSNEW.txt
> @@ -29,6 +29,29 @@ policy. Can be applied automatically by setting
>
> 'server services = +gpoupdate'.
>
> +Time Machine Support with vfs_fruit
> +===================================
> +Samba can be configured as a Time Machine target for Apple Mac devices
> +through the vfs_fruit module. When enabling a share for Time Machine
> +support the relevant Avahi records to support discovery will be published
> +for installations that have been built against the Avahi client library.
> +
> +Shares can be designated as a Time Machine share with the following setting:
> +
> + 'fruit:time machine = yes'
> +
> +Support for lower casing the MDNS Name
> +======================================
> +Allows the server name that is advertised through MDNS to be set to the
> +hostname rather than the Samba NETBIOS name. This allows an administrator
> +to make Samba registered MDNS records match the case of the hostname
> +rather than being in all capitals.
> +
> +This can be set with the following settings:
> +
> + 'mdns name = mdns'
> +
> +
> smb.conf changes
> ================
>
> @@ -38,7 +61,8 @@ smb.conf changes
> gpo update command New
> oplock contention limit Removed
> prefork children New 1
> -
> + mdns name Added netbios
> + fruit:time machine Added false
>
> NT4-style replication based net commands removed
> ================================================
> diff --git a/docs-xml/smbdotconf/base/mdnsname.xml b/docs-xml/smbdotconf/base/mdnsname.xml
> new file mode 100644
> index 00000000000..fba90ff9b84
> --- /dev/null
> +++ b/docs-xml/smbdotconf/base/mdnsname.xml
> @@ -0,0 +1,19 @@
> +<samba:parameter name="mdns name"
> + type="enum"
> + context="G"
> + enumlist="enum_mdns_name_values"
> + xmlns:samba="http://www.samba.org/samba/DTD/samba-doc">
> +
> +<description>
> + <para>This parameter controls the name that multicast DNS
> + support advertises as its' hostname.</para>
> +
> + <para>The default is to use the NETBIOS name which is typically
> + the hostname in all capital letters. </para>
> +
> + <para>A setting of mdns will defer the hostname configuration
> + to the MDNS library that is used.</para>
> +
> +</description>
> +<value type="default">netbios</value>
> +</samba:parameter>
> diff --git a/lib/param/loadparm.c b/lib/param/loadparm.c
> index d788ffbe36f..73b7901d7f6 100644
> --- a/lib/param/loadparm.c
> +++ b/lib/param/loadparm.c
> @@ -2906,6 +2906,8 @@ struct loadparm_context *loadparm_init(TALLOC_CTX *mem_ctx)
>
> lpcfg_do_global_parameter(lp_ctx, "client ldap sasl wrapping", "sign");
>
> + lpcfg_do_global_parameter(lp_ctx, "mdns name", "netbios");
> +
> lpcfg_do_global_parameter(lp_ctx, "ldap server require strong auth", "yes");
>
> lpcfg_do_global_parameter(lp_ctx, "follow symlinks", "yes");
> diff --git a/lib/param/loadparm.h b/lib/param/loadparm.h
> index e3c82164ca4..b5d79b912c7 100644
> --- a/lib/param/loadparm.h
> +++ b/lib/param/loadparm.h
> @@ -223,6 +223,9 @@ enum ldap_server_require_strong_auth {
> /* DNS update settings */
> enum dns_update_settings {DNS_UPDATE_OFF, DNS_UPDATE_ON, DNS_UPDATE_SIGNED};
>
> +/* MDNS name sources */
> +enum mdns_name_values {MDNS_NAME_NETBIOS, MDNS_NAME_MDNS};
> +
> /* LDAP SSL options */
> enum ldap_ssl_types {LDAP_SSL_OFF, LDAP_SSL_START_TLS};
>
> diff --git a/lib/param/param_table.c b/lib/param/param_table.c
> index f9052304bda..f9d3b55adf2 100644
> --- a/lib/param/param_table.c
> +++ b/lib/param/param_table.c
> @@ -127,6 +127,12 @@ static const struct enum_list enum_smb_signing_vals[] = {
> {-1, NULL}
> };
>
> +static const struct enum_list enum_mdns_name_values[] = {
> + {MDNS_NAME_NETBIOS, "netbios"},
> + {MDNS_NAME_MDNS, "mdns"},
> + {-1, NULL}
> +};
> +
> static const struct enum_list enum_tls_verify_peer_vals[] = {
> {TLS_VERIFY_PEER_NO_CHECK,
> TLS_VERIFY_PEER_NO_CHECK_STRING},
> diff --git a/source3/smbd/avahi_register.c b/source3/smbd/avahi_register.c
> index 91e8a439b84..50462b5c610 100644
> --- a/source3/smbd/avahi_register.c
> +++ b/source3/smbd/avahi_register.c
> @@ -111,9 +111,23 @@ static void avahi_client_callback(AvahiClient *c, AvahiClientState status,
> int dk = 0;
> AvahiStringList *adisk = NULL;
> AvahiStringList *adisk2 = NULL;
> + const char *hostname = NULL;
> + enum mdns_name_values mdns_name = lp_mdns_name();
>
> DBG_DEBUG("AVAHI_CLIENT_S_RUNNING\n");
>
> + switch (mdns_name) {
> + case MDNS_NAME_MDNS:
> + hostname = avahi_client_get_host_name(c);
> + break;
> + case MDNS_NAME_NETBIOS:
> + hostname = lp_netbios_name();
> + break;
> + default:
> + DBG_ERR("Unhandled mdns_name %d\n", mdns_name);
> + return;
> + }
> +
> state->entry_group = avahi_entry_group_new(
> c, avahi_entry_group_callback, state);
> if (state->entry_group == NULL) {
> @@ -125,7 +139,7 @@ static void avahi_client_callback(AvahiClient *c, AvahiClientState status,
>
> error = avahi_entry_group_add_service(
> state->entry_group, AVAHI_IF_UNSPEC,
> - AVAHI_PROTO_UNSPEC, 0, lp_netbios_name(),
> + AVAHI_PROTO_UNSPEC, 0, hostname,
> "_smb._tcp", NULL, NULL, state->port, NULL);
> if (error != AVAHI_OK) {
> DBG_DEBUG("avahi_entry_group_add_service failed: %s\n",
> @@ -169,7 +183,7 @@ static void avahi_client_callback(AvahiClient *c, AvahiClientState status,
>
> error = avahi_entry_group_add_service_strlst(
> state->entry_group, AVAHI_IF_UNSPEC,
> - AVAHI_PROTO_UNSPEC, 0, lp_netbios_name(),
> + AVAHI_PROTO_UNSPEC, 0, hostname,
> "_adisk._tcp", NULL, NULL, 0, adisk);
> avahi_string_list_free(adisk);
> adisk = NULL;
> --
> 2.13.6
>
More information about the samba-technical
mailing list