[cifs-protocol] [EXTERNAL] Trying to let a Windows client use MS-SWN against a samba cluster

Stefan Metzmacher metze at samba.org
Thu Jan 4 16:51:44 UTC 2024


Am 11.12.23 um 22:15 schrieb Kristian Smith:
> Hi Metze,
> 
> I'm reaching out with regard to question 10 from your mail below.
> 
> ---------------------------------------------------------------------------------------------------------
> Question 10:
> MS-SWM 3.1.6.1 Server Application Notifies of an Interface Being Enabled or Disabled
> 
>     The calling application provides the interface group name, IPv4 and/or IPv6
>     addresses, and state.
>     ...
>     Then for each entry in the WitnessRegistrationList where
>     WitnessRegistration.NetworkName
>     matches the application-provided interface group name ...
> 
> This seems to indicate that there's actually just a single
> InterfaceGroupName matching the single NetworkName.
> ---------------------------------------------------------------------------------------------------------
> 
> WitnessRegistration.NetworkName is the NetName provided by the client when registering.
> InterfaceGroupName is provided by the Server Cluster application.

That's also my understanding.

But on a windows 2012 cluster I saw that the interfaceGroupNames in the GetInterfaceList() response
are the per node netbios names (something like node0, node1, node2) that hold the related ip address.

But the NetworkName in th Register[Ex]() request from the client gets the sofs cluster name,
something like "sofs-cluster" or "sofs-cluster.example.com" (which has to match ServerGlobalName
(See Question 11).

With that the statement:

   Then for each entry in the WitnessRegistrationList where WitnessRegistration.NetworkName
   matches the application-provided interface group name ...

would never be true and no registration in the list will ever get any notification...
So it seems to be a documentation bug.

In my code I'm comparing WitnessRegistration.IpAddress being equal to the ip address of
the changed interface.

> If there are no current registered witnesses (clients), the Interface.InterfaceGroupName would still exist, but there would be no WitnessRegistration.NetworkName
> This check (referenced in your question) compares the server-application-provided InterfaceGroupName (the one that underwent a state change) to those in the list of registered witnesses. This ensures that the client receives a message about the state change.

It would mean on windows that it compares "node0" to match "sofs-cluster.example.com", which can't work.

> Please let me know if there are lingering concerns with Question 10 and I'd be happy to dig back in.

Please do :-)

Thanks!
metze



More information about the cifs-protocol mailing list