コード例 #1
0
ファイル: dfs_utils.c プロジェクト: anonopete/chitfs
Message *dfs_msg_recv(void *socket, char **buf) {
    unsigned long	len;

    *buf = dfs_prim_msg_recv(socket, &len);
    dfs_end_time(message_comm_type);
    Message *reply = message__unpack(NULL, len, *buf);

    if (reply->has_encrypted_payload) {
	assert(registered_aes_key && (socket == registered_aes_sock));
	dfs_out("\t\tdecrypt %x/%x (%d)\n", *(unsigned long *)reply->encrypted_payload.data,
		*(unsigned long *)registered_aes_key, reply->encrypted_payload.len);
	char *dec = dfs_aes_decrypt(registered_aes_key, NULL, 
				    reply->encrypted_payload.data, 
				    reply->encrypted_payload.len);
	Message *nreply = message__unpack(NULL, reply->encrypted_payload.len, dec);
	if (!nreply) {
	    dfs_out("\nERROR: decryption of incoming failed\n");
	    return NULL;
	}
	message__free_unpacked(reply, NULL);
	free(*buf);

	reply = nreply;
	*buf = dec;
    }

    dfs_out("Received %s%s from %s, seq %d, %d bytes, res %d ('%s')\n", 
	    reply->has_encrypted_payload ? "enc " : "", dfs_msgname(reply->type), 
	    reply->name ? reply->name : "NO NAME!", reply->seq, len, reply->res, 
	    reply->res ? strerror(-reply->res):"");
    return reply;
}
コード例 #2
0
int main(int argc, char *argv[])
{
	Message *m;

	uint8_t buf[MAX_MSG_SIZE];
	size_t msg_len = read_buffer(MAX_MSG_SIZE, buf);
	m = message__unpack(NULL,msg_len, buf);
	if(m == NULL) {
		fprintf(stderr,"error unpacking incoming message\n");
		exit(1);
	}

	printf("Received: np=%d npm=%d npa=%d load=%f uthresh=%f lthresh=%f\n", m->np,m->npm,m->npa,m->load,m->uthresh,m->lthresh);

	message__free_unpacked(m, NULL);
	return 0;
}