Example #1
0
BOOL WCTLbIsDuplicate (PSCache pCache, PS802_11Header pMACHeader)
{
    UINT            uIndex;
    UINT            ii;
    PSCacheEntry    pCacheEntry;

    if (IS_FC_RETRY(pMACHeader)) {

        uIndex = pCache->uInPtr;
        for (ii = 0; ii < DUPLICATE_RX_CACHE_LENGTH; ii++) {
            pCacheEntry = &(pCache->asCacheEntry[uIndex]);
            if ((pCacheEntry->wFmSequence == pMACHeader->wSeqCtl) &&
                (IS_ETH_ADDRESS_EQUAL (&(pCacheEntry->abyAddr2[0]), &(pMACHeader->abyAddr2[0])))
                ) {
                /* Duplicate match */
                return TRUE;
            }
            ADD_ONE_WITH_WRAP_AROUND(uIndex, DUPLICATE_RX_CACHE_LENGTH);
        }
    }
    /* Not fount in cache - insert */
    pCacheEntry = &pCache->asCacheEntry[pCache->uInPtr];
    pCacheEntry->wFmSequence = pMACHeader->wSeqCtl;
    memcpy(&(pCacheEntry->abyAddr2[0]), &(pMACHeader->abyAddr2[0]), ETH_ALEN);
    ADD_ONE_WITH_WRAP_AROUND(pCache->uInPtr, DUPLICATE_RX_CACHE_LENGTH);
    return FALSE;
}
Example #2
0
bool WCTLbIsDuplicate (PSCache pCache, struct ieee80211_hdr *pMACHeader)
{
    unsigned int            uIndex;
    unsigned int            ii;
    PSCacheEntry    pCacheEntry;

    if (IS_FC_RETRY(pMACHeader)) {

        uIndex = pCache->uInPtr;
        for (ii = 0; ii < DUPLICATE_RX_CACHE_LENGTH; ii++) {
            pCacheEntry = &(pCache->asCacheEntry[uIndex]);
            if ((pCacheEntry->wFmSequence == pMACHeader->seq_ctrl) &&
		(!compare_ether_addr(&(pCacheEntry->abyAddr2[0]),
				     &(pMACHeader->addr2[0]))) &&
                (LOBYTE(pCacheEntry->wFrameCtl) == LOBYTE(pMACHeader->frame_control))
                ) {
                /* Duplicate match */
                return true;
            }
            ADD_ONE_WITH_WRAP_AROUND(uIndex, DUPLICATE_RX_CACHE_LENGTH);
        }
    }
    /* Not found in cache - insert */
    pCacheEntry = &pCache->asCacheEntry[pCache->uInPtr];
    pCacheEntry->wFmSequence = pMACHeader->seq_ctrl;
    memcpy(&(pCacheEntry->abyAddr2[0]), &(pMACHeader->addr2[0]), ETH_ALEN);
    pCacheEntry->wFrameCtl = pMACHeader->frame_control;
    ADD_ONE_WITH_WRAP_AROUND(pCache->uInPtr, DUPLICATE_RX_CACHE_LENGTH);
    return false;
}
Example #3
0
BOOL WCTLbIsDuplicate (PSCache pCache, PS802_11Header pMACHeader)
{
    unsigned int            uIndex;
    unsigned int            ii;
    PSCacheEntry    pCacheEntry;

    if (IS_FC_RETRY(pMACHeader)) {

        uIndex = pCache->uInPtr;
        for (ii = 0; ii < DUPLICATE_RX_CACHE_LENGTH; ii++) {
            pCacheEntry = &(pCache->asCacheEntry[uIndex]);
            if ((pCacheEntry->wFmSequence == pMACHeader->wSeqCtl) &&
		(!compare_ether_addr(&(pCacheEntry->abyAddr2[0]),
				     &(pMACHeader->abyAddr2[0]))) &&
                (LOBYTE(pCacheEntry->wFrameCtl) == LOBYTE(pMACHeader->wFrameCtl))
                ) {
                /* Duplicate match */
                return TRUE;
            }
            ADD_ONE_WITH_WRAP_AROUND(uIndex, DUPLICATE_RX_CACHE_LENGTH);
        }
    }
    /* Not found in cache - insert */
    pCacheEntry = &pCache->asCacheEntry[pCache->uInPtr];
    pCacheEntry->wFmSequence = pMACHeader->wSeqCtl;
    memcpy(&(pCacheEntry->abyAddr2[0]), &(pMACHeader->abyAddr2[0]), ETH_ALEN);
    pCacheEntry->wFrameCtl = pMACHeader->wFrameCtl;
    ADD_ONE_WITH_WRAP_AROUND(pCache->uInPtr, DUPLICATE_RX_CACHE_LENGTH);
    return FALSE;
}
Example #4
0
File: amcc.c Project: andersma/amcc
/*
 * parse input packet and update pertinent variables
 */
gint parse_packet(packet_t *p, void *arg)
{
	int i;
	float adc, vol;
	float accx, accy, accz;

	if (p->type == ANALOG_NAME_RESPONSE) {
		// to be continued. @_@
	} else if (p->type == ANALOG_DATA_RESPONSE) {
		// update analog data buffer
		memcpy(&acc_data[accdata_present_index], 
			    &p->raw.analog_data, sizeof(analog_data_t));
		ADD_ONE_WITH_WRAP_AROUND(accdata_present_index, MAX_ANALOGDATA_ENTRY);
		memcpy(&gyro_data[gyrodata_present_index], 
			    &p->raw.analog_data, sizeof(analog_data_t));
		ADD_ONE_WITH_WRAP_AROUND(gyrodata_present_index, MAX_ANALOGDATA_ENTRY);
		// attitude
		attitude.acc_crt_x = p->raw.analog_data.value[ACCX_CHANNEL];
		attitude.acc_crt_y = p->raw.analog_data.value[ACCY_CHANNEL];
		attitude.acc_crt_z = p->raw.analog_data.value[ACCZ_CHANNEL];
		attitude_by_acc(&attitude);
	}

	return 0;
}
bool WCTLbIsDuplicate (PSCache pCache, PS802_11Header pMACHeader)
{
    unsigned int uIndex;
    unsigned int ii;
    PSCacheEntry    pCacheEntry;

    if (IS_FC_RETRY(pMACHeader)) {

        uIndex = pCache->uInPtr;
        for (ii = 0; ii < DUPLICATE_RX_CACHE_LENGTH; ii++) {
            pCacheEntry = &(pCache->asCacheEntry[uIndex]);
            if ((pCacheEntry->wFmSequence == pMACHeader->wSeqCtl) &&
                (!compare_ether_addr(&(pCacheEntry->abyAddr2[0]), &(pMACHeader->abyAddr2[0])))
                ) {
                
                return true;
            }
            ADD_ONE_WITH_WRAP_AROUND(uIndex, DUPLICATE_RX_CACHE_LENGTH);
        }
    }
    
    pCacheEntry = &pCache->asCacheEntry[pCache->uInPtr];
    pCacheEntry->wFmSequence = pMACHeader->wSeqCtl;
    memcpy(&(pCacheEntry->abyAddr2[0]), &(pMACHeader->abyAddr2[0]), ETH_ALEN);
    ADD_ONE_WITH_WRAP_AROUND(pCache->uInPtr, DUPLICATE_RX_CACHE_LENGTH);
    return false;
}
Example #6
0
File: amcc.c Project: andersma/amcc
static gboolean update_gyros_graph(gpointer data)
{
	graph_t *g = (graph_t*)data;

	if (gyrodata_present_index != gyrodata_process_index) {
		graph_force_update(g);
		ADD_ONE_WITH_WRAP_AROUND(gyrodata_process_index, MAX_ANALOGDATA_ENTRY);
	}
	return TRUE;
}
Example #7
0
File: kiki.c Project: szdiy/kiki
static gint rfid_id_callback (packet_t *p, void *arg)
{
	int i;
	static int counter = 0;
	hacker_t* hacker;
	char rfid[20], tbuf[50];

	time_t timep;
	struct tm *pt;

	time(&timep);
	pt = localtime(&timep);

	g_printf("[rfid %d ] ", counter++);
	for (i = 0; i < 5; i++) {
		g_printf("%x,", p->raw.rfid_id[i]);
	}
	g_printf("\n");

	snprintf(rfid, sizeof(rfid), "%2x%2x%2x%2x%2x", p->raw.rfid_id[0], p->raw.rfid_id[1], 
			p->raw.rfid_id[2], p->raw.rfid_id[3], p->raw.rfid_id[4]);
	/* special treatment for space 0->" 0"->"00" */	
	for (i = 0; i < 10; i++) {
		if (rfid[i] == ' ') {
			rfid[i] = '0';
		}
	}

	hacker = search_hacker(&szdiy, rfid);
	if (hacker && !hacker->login++) {
		/* handling login_time */
		sprintf(tbuf, "%4d-%2d-%2d/%2d:%2d:%2d", (1900+pt->tm_year), 1 + pt->tm_mon, 
				pt->tm_mday, pt->tm_hour, pt->tm_min, pt->tm_sec);
		/* special treatment for space 0->" 0"->"00" */	
		for (i = 0; i < strlen(tbuf); i++) {
			if (tbuf[i] == ' ') {
				tbuf[i] = '0';
			}
		}
		if (!hacker->login_time) { /* double check */
			hacker->login_time = strdup(tbuf);
		}
		hacker_backlog[hacker_present_index].rfid = hacker->rfid;
		hacker_backlog[hacker_present_index].name = hacker->name;
		hacker_backlog[hacker_present_index].prof = hacker->prof;
		hacker_backlog[hacker_present_index].why = hacker->why;
		hacker_backlog[hacker_present_index].login_time = hacker->login_time;
		update_hacker_number(++hacker_number);
		ADD_ONE_WITH_WRAP_AROUND(hacker_present_index, MAX_HACKER_BACKLOG);
	}
}
Example #8
0
File: wcmd.c Project: 020gzh/linux
int vnt_schedule_command(struct vnt_private *priv, enum vnt_cmd command)
{

	if (priv->free_cmd_queue == 0)
		return false;

	priv->cmd_queue[priv->cmd_enqueue_idx] = command;

	ADD_ONE_WITH_WRAP_AROUND(priv->cmd_enqueue_idx, CMD_Q_SIZE);
	priv->free_cmd_queue--;

	if (priv->cmd_running == false)
		vnt_cmd_complete(priv);

	return true;

}
Example #9
0
File: wcmd.c Project: 020gzh/linux
static int vnt_cmd_complete(struct vnt_private *priv)
{

	priv->command_state = WLAN_CMD_IDLE;
	if (priv->free_cmd_queue == CMD_Q_SIZE) {
		/* Command Queue Empty */
		priv->cmd_running = false;
		return true;
	}

	priv->command = priv->cmd_queue[priv->cmd_dequeue_idx];

	ADD_ONE_WITH_WRAP_AROUND(priv->cmd_dequeue_idx, CMD_Q_SIZE);
	priv->free_cmd_queue++;
	priv->cmd_running = true;

	switch (priv->command) {
	case WLAN_CMD_INIT_MAC80211:
		priv->command_state = WLAN_CMD_INIT_MAC80211_START;
		break;

	case WLAN_CMD_TBTT_WAKEUP:
		priv->command_state = WLAN_CMD_TBTT_WAKEUP_START;
		break;

	case WLAN_CMD_BECON_SEND:
		priv->command_state = WLAN_CMD_BECON_SEND_START;
		break;

	case WLAN_CMD_SETPOWER:
		priv->command_state = WLAN_CMD_SETPOWER_START;
		break;

	case WLAN_CMD_CHANGE_ANTENNA:
		priv->command_state = WLAN_CMD_CHANGE_ANTENNA_START;
		break;

	default:
		break;
	}

	vnt_cmd_timer_wait(priv, 0);

	return true;
}
Example #10
0
File: kiki.c Project: szdiy/kiki
static gboolean idle_update_hacker_list(gpointer data)
{
	pid_t pid;
	int status;
	char *argv[10];
	time_t timep;
	struct tm *p;
	char tbuf[50], cmd[300], rfid[50], name[50];
	int i;
	char cwd[200];
	time(&timep);
	p = localtime(&timep);


	packet_t pkt;
	pkt.raw.rfid_id[0] = 0;
	pkt.raw.rfid_id[1] = 0;
	pkt.raw.rfid_id[2] = 0;
	pkt.raw.rfid_id[3] = 0;

	/* check if needing hackers reloading */
	if (sighup_flag) {
		sighup_flag = 0;
		reload_configuration();
	}

	if (sigchld_flag) {
		waitpid(-1, &status, 0);
	}

	sprintf(tbuf, "%4d-%2d-%2d/%2d:%2d:%2d", (1900+p->tm_year), 1 + p->tm_mon, p->tm_mday, p->tm_hour, p->tm_min, p->tm_sec);
	/* special treatment for space 0->" 0"->"00" */	
	for (i = 0; i < strlen(tbuf); i++) {
		if (tbuf[i] == ' ') {
			tbuf[i] = '0';
		}
	}
	if (hacker_present_index != hacker_process_index) {
		/* Append a row and fill in some data */
		gtk_list_store_append (theHackerListStore, &theHackerListIter);
		gtk_list_store_set (theHackerListStore, &theHackerListIter,
					COL_TIME, tbuf,
					COL_NAME, hacker_backlog[hacker_process_index].name,
					COL_PROF, hacker_backlog[hacker_process_index].prof,
					COL_WHY, hacker_backlog[hacker_process_index].why,
					-1);
		/* invoke log.sh shell script */
		getcwd(cwd, sizeof(cwd));
		snprintf(cmd, sizeof(cmd), "%s/log.sh", cwd); 
		snprintf(rfid, sizeof(name), "%s", hacker_backlog[hacker_process_index].rfid);
		snprintf(name, sizeof(name), "%s", hacker_backlog[hacker_process_index].name);
		pid = fork();
		if (pid == 0) {
			argv[0] = strdup("/bin/bash");	
			argv[1] = strdup(cmd);	
			argv[2] = strdup(rfid);	
			argv[3] = strdup(name);	
			argv[4] = strdup(tbuf);	
			argv[5] = NULL;
			execve("/bin/bash", argv, NULL);
			_exit(1);
		}

		ADD_ONE_WITH_WRAP_AROUND(hacker_process_index, MAX_HACKER_BACKLOG);
	}

	return TRUE;
}