#include <stdio.h>
#include <stdlib.h>
#include <netinet/in.h>
#include <getopt.h>
#include <sys/types.h>
#include <unistd.h>


#include "smbmanager.h"

int main(int argc, char *argv[])
{ 
	SMBManager *pSMBManager;
        pSMBManager = (SMBManager *) malloc(sizeof(SMBManager));

	SMBManager_Construct(pSMBManager);
	SMBManager_CreateShareMsg(pSMBManager);


	SMBManager_ListenSocket(pSMBManager);

	while (1) {                // main accept() loop

		SMBManager_Accept(pSMBManager);

		while (pSMBManager->smb_status == GOT_CONNECTION)  {
			SMBManager_ReadNBHeader(pSMBManager);
			
			switch (pSMBManager->pdu_nbheader.type) {
				
				case 0x81:  //nb session request
					SMBManager_ProcessNBRequest(pSMBManager);
					break;

				case 0x00: //smb request
					SMBManager_ReadSMBHeader(pSMBManager);
					SMBManager_ProcessSMBRequest(pSMBManager);
					break;
				default:
#ifdef DEBUG
					printf("WARNING: Unknown NMB protocol type!\n");
#endif
					SMBManager_Disconnect(pSMBManager);
					break;
			} 

		}


	}

	SMBManager_Destruct(pSMBManager);
	free(pSMBManager);

	return 0;
	

}
