From c7eb1f9eacf54aa8224ab7f2b8369c739a45726c Mon Sep 17 00:00:00 2001 From: Jeffrey Altman Date: Wed, 18 May 2011 13:51:53 -0400 Subject: [PATCH] auth: failback to afs3-vlserver for afs3-prserver If the DNS SRV lookup is for afs3-prserver or afs3-kaserver, fallback to a lookup for afs3-vlserver since those services are traditionally hosted on the same machine as the vlserver. FIXES 129887 Reviewed-on: http://gerrit.openafs.org/4676 Reviewed-by: Derrick Brashear Tested-by: BuildBot Reviewed-by: Jeffrey Altman (cherry picked from commit 19f4fa2b4870828269e0751a4874d9ce67a1bb3a) Change-Id: I9d0e2f0ca9d4ddc5ebf9defb44c62f6bf00955d6 Reviewed-on: http://gerrit.openafs.org/4681 Reviewed-by: Derrick Brashear Tested-by: Derrick Brashear --- src/auth/cellconfig.c | 17 ++++++++++++++++- 1 file changed, 16 insertions(+), 1 deletion(-) diff --git a/src/auth/cellconfig.c b/src/auth/cellconfig.c index bc1b3efc8..ad95a9b53 100644 --- a/src/auth/cellconfig.c +++ b/src/auth/cellconfig.c @@ -1229,6 +1229,21 @@ afsconf_GetAfsdbInfo(char *acellName, char *aservice, ports, ipRanks, &numServers, &ttl, &realCellName); + /* If we couldn't find an entry for the requested service + * and that service happens to be the prservice or kaservice + * then fallback to searching for afs3-vlserver and assigning + * the port number here. */ + if (code < 0 && (afsdbport == htons(7002) || afsdbport == htons(7004))) { + code = afsconf_LookupServer("afs3-vlserver", "udp", + (const char *)acellName, afsdbport, + cellHostAddrs, cellHostNames, + ports, ipRanks, &numServers, &ttl, + &realCellName); + if (code >= 0) { + for (i = 0; i < numServers; i++) + ports[i] = afsdbport; + } + } if (code == 0) { acellInfo->timeout = ttl; acellInfo->numServers = numServers; @@ -1291,7 +1306,7 @@ afsconf_GetAfsdbInfo(char *acellName, char *aservice, * and that service happens to be the prservice or kaservice * then fallback to searching for afs3-vlserver and assigning * the port number here. */ - if (rc < 0 && tservice == htons(7002) || tservice == htons(7004)) { + if (rc < 0 && (tservice == htons(7002) || tservice == htons(7004))) { rc = getAFSServer("afs3-vlserver", "udp", acellName, tservice, cellHostAddrs, cellHostNames, ports, ipRanks, &numServers, &ttl); -- 2.39.5