Yes - this could be very useful for cifs (SMB3) in processing DFS (global namespace) referrals and also in Witness protocol redirections, as well as some reconnect scenarios (especially when low in memory when upcalls could be risky) On Wed, Sep 12, 2018 at 6:11 AM David Howells <dhowells@xxxxxxxxxx> wrote: > > Hi Trond, Anna, Steve, > > For kAFS, I'm writing something to allow the in-kernel DNS resolver be able to > ask for a server list (eg. the list of VL servers in an AFS cell) and get back > a list of servers and the addresses associated with each server. > > This would be requested by passing an "srv=<version>" option in the callout > info. > > The payload handed to the kernel currently looks like something assembled from > the data obtained from a bunch of SRV records that have been further looked up > to A or AAAA. > > In the kernel it might get parsed to something like: > > struct address { > union { > struct sockaddr_in sin; > struct sockaddr_in6 sin6; > }; > }; > > struct server { > unsigned short port; > unsigned short pref; // From SRV > unsigned short weight; // From SRV > unsigned char ipproto; // IPPROTO_* > unsigned int nr_addrs; // May be 0 > struct address *addrs; > }; > > struct server_list { > unsigned int nr_servers; > struct server servers[]; > }; > > Is this something that NFS or CIFS (or anything else for that matter) could > find useful? > > I also have this loading information from a configuration file as a > backup/override of the DNS. Could that also be useful to NFS/CIFS? > > David -- Thanks, Steve