コード例 #1
0
bool link_transport_checksum_isok(link_pkt_t * pkt){
	u8 checksum;
	if( pkt->size <= LINK_PACKET_DATA_SIZE ){
		checksum = pkt->data[pkt->size];
	} else {
		return false;
	}

	link_transport_insert_checksum(pkt);
	if( checksum == pkt_checksum(pkt) ){
		return true;
	}

	return false;
}
コード例 #2
0
ファイル: libsrj.c プロジェクト: orionmiller/selective_reject
int recv_pkt(pkt *Pkt, int socket, struct sockaddr_in *src_addr, uint32_t buffsize)
{
    int flags = 0;
    int src_addr_len = sizeof(*src_addr);
    //  uint32_t i;

    if (Pkt != NULL && Pkt->datagram != NULL)
    {
        Pkt->datagram_len = s_recvfrom(socket, Pkt->datagram, buffsize+HDR_LEN, flags,
                                       (struct sockaddr *)src_addr, (socklen_t *)&(src_addr_len));
        Pkt->data_len = Pkt->datagram_len - HDR_LEN;
        if (pkt_checksum(Pkt) == CHECKSUM_GOOD)
        {
            get_hdr(Pkt);
            //	  printf("--Recv--\n");
            //	  print_hdr(Pkt);
            //	  printf("--------\n");
            return 1;
        }
        else
            return 0;
    }
    return 0;
}