示例#1
0
int
HandleTriggerDelete(Command *comm, int argc, char **argv)
{
	char fn[] = "HandleTriggerDelete():";
    DB_tDb dbstruct;
	DB db;
	TriggerKey tgKey = { 0 };
	TriggerEntry *tgPtr;
	int rc = xleOk;

	if (argc < 1)
	{
	  	HandleCommandUsage(comm, argc, argv);
	  	return -xleInsuffArgs;
	}

	nx_strlcpy(tgKey.name, argv[0], TRIGGER_ATTR_LEN);

	dbstruct.read_write = GDBM_WRCREAT;
	if (!(db = DbOpenByID(TRIGGER_DB_FILE, DB_eTrigger, &dbstruct)))
	{
		CLIPRINTF((stdout, "Unable to open %s\n", TRIGGER_DB_FILE));
		return -xleInvalArgs;
	}

	if (!(tgPtr = (TriggerEntry *)DbFindEntry(db, (char *)&tgKey, sizeof(TriggerKey))))
	{
	 	CLIPRINTF((stdout, 
			"entry (%s) does not exists\n", tgKey.name));

	  	rc = -xleNoEntry;
		DbClose(&dbstruct);
		goto _return;
	}

	/* Store the entry */
	if (DbDeleteEntry(db, (char *)&tgKey, sizeof(TriggerKey)) < 0)
	{
		CLIPRINTF((stdout,"database delete error %d\n", errno));
		rc = -xleOpNoPerm;
		DbClose(&dbstruct);
		goto _return;
	}

	DbClose(&dbstruct);

	// Update the cache also
	if (CacheAttach() > 0)
	{
		CacheHandleTrigger(tgPtr, CLIOP_DELETE);
			
		CacheDetach();
	}

_return:
	free(tgPtr);

	return rc;
}
CAlmSettingsServer::~CAlmSettingsServer()
{
  DbClose();
  iSession.Close();
  if(iBackupSession) iBackupSession->DeRegisterBackupOperationObserver(*this);
  delete iBackupSession;
}
示例#3
0
int OpAcidDb_Stop(OutputPlugin *outputPlugin)
{
    OpAcidDb_Data *data = (OpAcidDb_Data *)outputPlugin->data;

    if(data == NULL)
        FatalError("ERROR: Unable to find context for AcidDb startup!\n");

    /* close database connection */
    DbClose(data);
    
    return 0;
}
void CAlmSettingsServer::LockNotifyL(TBool aState)
{
  if(aState!=iLock)
  {
    if(aState) DbClose();
    else if(!iBackup)
    {
      User::After(1000000);
      DbOpenL();
    }
    iLock=aState;
  }
}
void CAlmSettingsServer::HandleBackupOperationEventL(const TBackupOperationAttributes& aBackupOperationAttributes)
{
  TBool state=EFalse;
  if(aBackupOperationAttributes.iOperation==EStart) state=ETrue;
  if(state!=iBackup)
  {
    if(state) DbClose();
    else if(!iLock)
    {
      DbOpenL();
    }
    iBackup=state;
  }
}
//
// Cleanup (only called if the ModuleNexus is explicitly reset)
//
Directory::~Directory()
{
	if (mCDSA.DBHandle)
		CssmError::check(DbClose(mCDSA));
	CssmError::check(MDS_Terminate(mds()));
}
示例#7
0
int
HandleTriggerEdit(Command *comm, int argc, char **argv)
{
	char fn[] = "HandleTriggerEdit():";
	DB_tDb dbstruct;
	DB db;
    	DB_tDb crdbstruct;
	DB crdb;
	TriggerEntry *tgPtr;
	TriggerKey tgKey = { 0 };
	int rc = xleOk;
	VpnRouteEntry *tmp;
        VpnRouteKey routeKey = { 0 };

	if (argc < 1)
	{
	  	HandleCommandUsage(comm, argc, argv);
	  	return -xleInsuffArgs;
	}

	nx_strlcpy(tgKey.name, argv[0], TRIGGER_ATTR_LEN);

	dbstruct.read_write = GDBM_WRCREAT;
	if (!(db = DbOpenByID(TRIGGER_DB_FILE, DB_eTrigger, &dbstruct)))
	{
		CLIPRINTF((stdout, "Unable to open %s\n", TRIGGER_DB_FILE));
		return -xleInvalArgs;
	}

	if (!(tgPtr = (TriggerEntry *)DbFindEntry(db, (char *)&tgKey, sizeof(TriggerKey))))
	{
	 	CLIPRINTF((stdout, 
			"entry (%s) does not exists\n", tgKey.name));

	  	rc = -xleNoEntry;
		goto _return;
	}

	argc -= 1;
	argv += 1;

	if (argc <= 0)
	{
		goto _return;	
	}

	// Update the cache also
	if (CacheAttach() > 0)
	{
		CacheHandleTrigger(tgPtr, CLIOP_DELETE);
			
		CacheDetach();
	}

	GetAttrPairs(comm->name, &argc, &argv, tgPtr, CLI_GET_ATTR_TRIGGER);

	if(tgPtr->action == TRIGGER_ACTION_INSERTROUTE && strlen(tgPtr->actiondata) )
	{
		crdbstruct.read_write = GDBM_READER;
		if (!(crdb = DbOpenByID(CALLROUTE_DB_FILE, DB_eCallRoute, &crdbstruct)))
		{
			CLIPRINTF((stdout, "Unable to open %s\n", CALLROUTE_DB_FILE));
			rc = -xleInvalArgs;
			goto _return;
		}

        	strncpy(routeKey.crname, tgPtr->actiondata, CALLPLAN_ATTR_LEN-1);

		tmp = (VpnRouteEntry *)DbFindEntry(crdb, (char *)&routeKey, sizeof(VpnRouteKey));

		if(!tmp)
		{
			CLIPRINTF((stdout, "template route %s not found for trigger %s\n", tgPtr->actiondata, tgPtr->name));
			NETDEBUG(MCLI, NETLOG_DEBUG4, 
				("%s: template route %s not found for trigger %s\n", fn,
				tgPtr->actiondata, tgPtr->name));

			goto _template_route_error;
		}
		if( !(tmp->crflags & CRF_TEMPLATE) )
		{
			CLIPRINTF((stdout, "trigger %s can use only a template route\n", tgPtr->name));

			NETDEBUG(MCLI, NETLOG_DEBUG4, 
				("%s: trigger %s can use only a template route\n", fn, tgPtr->name));

			goto _template_route_error;
		}
		DbClose(&crdbstruct);
	}

	/* Store the entry */
	if (DbStoreEntry(db, (char *)tgPtr, sizeof(TriggerEntry), 
			       (char *)tgPtr, sizeof(TriggerKey)) < 0)
	{
		CLIPRINTF((stdout,"database store error %d\n", errno));
		rc = -xleOpNoPerm;
		goto _return;
	}

	// Update the cache also
	if (CacheAttach() > 0)
	{
		CacheHandleTrigger(tgPtr, CLIOP_ADD);
			
		CacheDetach();
	}

_return:
	DbClose(&dbstruct);
	free(tgPtr);

	return rc;

_template_route_error:
	rc = -xleInvalArgs;

	DbClose(&dbstruct);
	DbClose(&crdbstruct);
	free(tgPtr);

	return rc;
}