X-Git-Url: https://git.openafs.org/?p=openafs.git;a=blobdiff_plain;f=src%2FWINNT%2Fafsd%2Flanahelper.cpp;h=5cdc27bd5e69893dcc3325cc53f216de57b24b72;hp=d704adac67090f1d2594ca351c9a94ef4342a8b5;hb=2469663d0d4b2df8100ec8e09954163ddf1aa042;hpb=3f2e943d430ea85ece5c1f96f197122a7c47851c diff --git a/src/WINNT/afsd/lanahelper.cpp b/src/WINNT/afsd/lanahelper.cpp index d704ada..5cdc27b 100644 --- a/src/WINNT/afsd/lanahelper.cpp +++ b/src/WINNT/afsd/lanahelper.cpp @@ -394,6 +394,35 @@ extern "C" lana_number_t lana_FindLoopback(void) return LANA_INVALID; } +/* Returns TRUE if all adapters are loopback adapters */ +extern "C" BOOL lana_OnlyLoopback(void) +{ + NCB ncb; + LANA_ENUM lana_list; + int status; + int i; + + memset(&ncb, 0, sizeof(ncb)); + ncb.ncb_command = NCBENUM; + ncb.ncb_buffer = (UCHAR *) &lana_list; + ncb.ncb_length = sizeof(lana_list); + status = Netbios(&ncb); + if (status != 0) { +#ifndef NOLOGGING + afsi_log("Netbios NCBENUM failed: status %ld", status); +#endif + return FALSE; + } + for (i = 0; i < lana_list.length; i++) { + if (!lana_IsLoopback(lana_list.lana[i])) { + // Found one non-Loopback adapter + return FALSE; + } + } + // All adapters are loopback + return TRUE; +} + // Is the given lana a Windows Loopback Adapter? // TODO: implement a better check for loopback // TODO: also check for proper bindings (IPv4)