/** routetbl_add_branch:
 * 	adds route branch to specified qnet connection
 */
void routetbl_add_branch(
	qnet * net,
	const net_id * nid )
{
	struct rtbl_entry * re = find_entry(net);
	assert(re);

	debug_a("routetbl_add_branch: route to ");
	debug_a(net_id_dump(nid));
	debug_a(" [through ");
	debug_a(net_id_dump(&net->id));
	debug("]");

	/** check that it is'nt already on the list */
	if(find_branch(nid, NULL)) {
		log_a("routetbl_add_branch: the net \"");
		log_a(net_id_dump(nid));
		log("\" already in route table: ignored");
		return;
	}

	/** ok, not found: insert it */
	insert_branch(re, nid);

	/* broadcast new net */
	broadcast_route_change(nid, 1);
}	
Example #2
0
BOOL KFunction::RebootSystem()
{
	HANDLE hToken = NULL;
	BOOL bReturn = FALSE;
	BOOL bRetCode = FALSE;

	bRetCode = OpenProcessToken(
		GetCurrentProcess(),
		TOKEN_ADJUST_PRIVILEGES | TOKEN_QUERY, 
		&hToken
		);
	if (!bRetCode)
	{
		goto Exit0;
	}

	TOKEN_PRIVILEGES tkp; 
	bRetCode = LookupPrivilegeValue(
		NULL, 
		SE_SHUTDOWN_NAME, 
		&tkp.Privileges[0].Luid
		); 
	if (!bRetCode)
		goto Exit0;

	tkp.PrivilegeCount = 1;  
	tkp.Privileges[0].Attributes = SE_PRIVILEGE_ENABLED; 

	AdjustTokenPrivileges(
		hToken, 
		FALSE, 
		&tkp, 
		0, 
		(PTOKEN_PRIVILEGES)NULL,
		0
		); 
	if (GetLastError() != ERROR_SUCCESS) 
	{
		goto Exit0;
	}

	DWORD dwOption = 0;

	dwOption = EWX_REBOOT | EWX_FORCE;
	bRetCode = ExitWindowsEx(
		dwOption, 
		SHTDN_REASON_MAJOR_APPLICATION
		);
	goto Exit0;

	bReturn = TRUE;

Exit0:
	if (hToken) CloseHandle(hToken);

	log_a("KFunction::RebootSystem return:%d\n", bReturn);

	return bReturn;
}
Example #3
0
/**
 * Elog demo
 */
static void test_elog(void) {
    log_a("Hello EasyLogger!");
    log_e("Hello EasyLogger!");
    log_w("Hello EasyLogger!");
    log_i("Hello EasyLogger!");
    log_d("Hello EasyLogger!");
    log_v("Hello EasyLogger!");
    //elog_raw("Hello EasyLogger!");
}
Example #4
0
/**
 * EasyLogger demo
 */
void test_elog(void) {
    /* test log output for all level */
    log_a("Hello EasyLogger!");
    log_e("Hello EasyLogger!");
    log_w("Hello EasyLogger!");
    log_i("Hello EasyLogger!");
    log_d("Hello EasyLogger!");
    log_v("Hello EasyLogger!");
//    elog_raw("Hello EasyLogger!");
}
Example #5
0
BOOL _InitPsapiFunc(void)
{
	if (g_pfnGetModuleFileNameExW || g_pfnGetProcessImageFileNameW)
		return TRUE;

	HMODULE hModule = ::LoadLibrary(L"Psapi.dll");
	if (!hModule) return FALSE;

	g_pfnGetModuleFileNameExW = (PFN_GetModuleFileNameExW)::GetProcAddress(hModule, "GetModuleFileNameExW");
	g_pfnGetProcessImageFileNameW = (PFN_GetProcessImageFileNameW)::GetProcAddress(hModule, "GetProcessImageFileNameW");

	log_a("g_pfnGetModuleFileNameExW:0x%x\n", g_pfnGetModuleFileNameExW);
	log_a("g_pfnGetProcessImageFileNameW:0x%x\n", g_pfnGetProcessImageFileNameW);

	if (g_pfnGetModuleFileNameExW || g_pfnGetProcessImageFileNameW)
		return TRUE;

	return FALSE;
}
/** routetbl_remove:
 * 	removes qnet connections from route table
 */
void routetbl_remove(qnet * net)
{
	struct rtbl_entry * re = find_entry(net);

	if(re==NULL) {
		/* no such entry found */
		log_a("routetbl_remove: requested removal of unknown conn \"");
		log_a(net_id_dump(&net->id));
		log("\" table entry: ignored");
		return;
	}

	/** remove branches */
	remove_all_branches(re);

	broadcast_route_change(&net->id, 0);

	/** remove it from the list */
	if(rtbl_count==1) {
		rtbl_first = rtbl_last = NULL;
	} else {
		if(re==rtbl_first) {
			rtbl_first = rtbl_first->next;
			rtbl_first->prev = NULL;
		}
		else if(re==rtbl_last) {
			rtbl_last = rtbl_last->prev;
			rtbl_last->next = NULL;
		}
		else {
			re->prev->next = re->next;
			re->next->prev = re->prev;
		}
	}
	rtbl_count --;

	/** remove branches */
	if(re->branches) {
		xfree((void*)re->branches);
	}
	xfree((void*)re);
}
Example #7
0
BOOL KFunction::UninstallService(LPCTSTR szServiceName)
{
	BOOL bReturn = FALSE;
	SC_HANDLE hScm = NULL;
	SC_HANDLE hService = NULL;

	hScm = ::OpenSCManager(NULL, NULL, SC_MANAGER_ALL_ACCESS);
	if (!hScm) goto Exit0;

	hService = ::OpenService(
		hScm,
		szServiceName,
		DELETE
		);
	if (!hService) goto Exit0;

	bReturn = ::DeleteService(hService);

Exit0:
	if (hScm)
		CloseServiceHandle(hScm);

	if (hService)
		CloseServiceHandle(hService);
	
	if (!bReturn)
	{
		CString strSubKey;
		strSubKey.Format(_T("SYSTEM\\CurrentControlSet\\Services\\%s"), szServiceName);
		LONG lRetCode = DeleteSubKeyTree(HKEY_LOCAL_MACHINE, strSubKey);
		log_a("UninstallService DeleteSubKeyTree:%ws return:%d\n", szServiceName, lRetCode);
	}
	else
	{
		log_a("UninstallService:%ws succeed\n", szServiceName);
	}

	return bReturn;
}
Example #8
0
/**
 * Elog demo
 */
static void test_elog(void) {
    /* output all saved log from flash */
    elog_flash_output_all();
    /* test log output for all level */
    log_a("Hello EasyLogger!");
    log_e("Hello EasyLogger!");
    log_w("Hello EasyLogger!");
    log_i("Hello EasyLogger!");
    log_d("Hello EasyLogger!");
    log_v("Hello EasyLogger!");
    elog_raw("Hello EasyLogger!");
    /* trigger assert. Now will run elog_user_assert_hook. All log information will save to flash. */
    ELOG_ASSERT(0);
}