thrd_SetEvent(cm_IPAddrDaemon_ShutdownEvent);
Result = NotifyAddrChange(NULL,NULL);
if (Result == NO_ERROR && daemon_ShutdownFlag == 0) {
+ smb_LanAdapterChange();
thrd_ResetEvent(cm_IPAddrDaemon_ShutdownEvent);
Sleep(2500);
if (daemon_ShutdownFlag == 0) {
osi_rwlock_t smb_rctLock;
osi_mutex_t smb_ListenerLock;
-char smb_LANadapter;
+char smb_LANadapter = -1;
unsigned char smb_sharename[NCBNAMSZ+1] = {0};
BOOL isGateway = FALSE;
FreeNCB(ncbp);
}
+
+void smb_LanAdapterChange(void) {
+ lana_number_t lanaNum;
+ BOOL bGateway;
+ char NetbiosName[MAX_NB_NAME_LENGTH] = "";
+ int change = 0;
+
+ if (SUCCEEDED(lana_GetUncServerNameEx(NetbiosName, &lanaNum, &bGateway,
+ LANA_NETBIOS_NAME_FULL))) {
+ if (smb_LANadapter != lanaNum ||
+ isGateway != bGateway ||
+ strcmp(cm_NetbiosName, NetbiosName))
+ change = 1;
+ }
+
+ if (change) {
+ afsi_log("Lan Adapter Change detected");
+ smb_StopListeners();
+ smb_RestartListeners();
+ }
+}
+
/* initialize Netbios */
int smb_NetbiosInit(void)
{
extern void smb_StopListeners(void);
extern void smb_StopListener(NCB *ncbp, int lana);
extern long smb_IsNetworkStarted(void);
+extern void smb_LanAdapterChange(void);
#define SMB_LISTENER_UNINITIALIZED -1
#define SMB_LISTENER_STOPPED 0