• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    公众号

C++ calc_checksum函数代码示例

原作者: [db:作者] 来自: [db:来源] 收藏 邀请

本文整理汇总了C++中calc_checksum函数的典型用法代码示例。如果您正苦于以下问题:C++ calc_checksum函数的具体用法?C++ calc_checksum怎么用?C++ calc_checksum使用的例子?那么恭喜您, 这里精选的函数代码示例或许可以为您提供帮助。



在下文中一共展示了calc_checksum函数的20个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于我们的系统推荐出更棒的C++代码示例。

示例1: handle_ICMP_packet

bool handle_ICMP_packet(packet_info_t *pi) {
    debug_println("Packet is ICMP");
    byte *icmp_packet = pi->packet+IPV4_HEADER_OFFSET+IPV4_HEADER_LENGTH;
    struct icmp_echo_hdr *icmp_hdr = (void *)pi->packet+IPV4_HEADER_OFFSET+IPV4_HEADER_LENGTH;
    /*unsigned i;
     for (i = 0; i < pi->len-IPV4_HEADER_OFFSET-IPV4_HEADER_LENGTH; i++)
     printf("(%d %02X) ", i, (int)*(icmp_packet+i));
     printf("\n");*/
    
    if (calc_checksum(icmp_packet, pi->len-IPV4_HEADER_OFFSET-IPV4_HEADER_LENGTH)) {
        debug_println("ICMP checksum failed, dropping packet!");
        return 1;
    }
    
    uint8_t type = ICMPH_TYPE(icmp_hdr);
    
    switch (type) {
        case ICMP_TYPE_ECHO_REQUEST: ICMPH_TYPE_SET(icmp_hdr, 0);
            break;
        case ICMP_TYPE_ECHO_REPLY: handle_ping_reply(pi); return 1;
        default: debug_println("Dropping packet: type %d unknown.", type); return 1;
            
    }
    ICMPH_CHKSUM_SET(icmp_hdr, 0);
    ICMPH_CHKSUM_SET(icmp_hdr, htons(calc_checksum(icmp_packet, pi->len-IPV4_HEADER_OFFSET-IPV4_HEADER_LENGTH)));
    /*for (i = 0; i < pi->len-IPV4_HEADER_OFFSET-IPV4_HEADER_LENGTH; i++)
     printf("(%d %02X) ", i, (int)*(icmp_packet+i));
     printf("\n");*/
    return 0;
}
开发者ID:CharlieBashford,项目名称:P33,代码行数:30,代码来源:my_icmp.c


示例2: send_ping

void send_ping(router_t *router, addr_ip_t dest_ip, addr_ip_t src_ip, uint16_t id, uint16_t count) {
    int len = IPV4_HEADER_LENGTH+8;
    byte *payload = malloc_or_die(len*sizeof(byte)); //Free'd (below)
    struct ip_hdr *iphdr = (void *)payload;
    
    IPH_VHLTOS_SET(iphdr, 4, 5, 0);
    IPH_LEN_SET(iphdr, htons(len));
    IPH_ID_SET(iphdr, 0);
    IPH_OFFSET_SET(iphdr, 0);
    IPH_TTL_SET(iphdr, 64);
    IPH_PROTO_SET(iphdr, 1);
    iphdr->src.addr = src_ip;
    iphdr->dest.addr = dest_ip;
    
    IPH_CHKSUM_SET(iphdr, 0);
    IPH_CHKSUM_SET(iphdr, htons(calc_checksum(payload, IPV4_HEADER_LENGTH)));
    
    struct icmp_echo_hdr *pihdr = (void *)payload+IPV4_HEADER_LENGTH;
    ICMPH_TYPE_SET(pihdr, ICMP_TYPE_ECHO_REQUEST);
    ICMPH_CODE_SET(pihdr, 0);
    pihdr->id = id;
    pihdr->seqno = count;
    
    ICMPH_CHKSUM_SET(pihdr, 0);
    ICMPH_CHKSUM_SET(pihdr, htons(calc_checksum(payload+IPV4_HEADER_LENGTH, 8)));
    
    send_packet(payload, src_ip, dest_ip, len, FALSE, FALSE);
    free(payload);
}
开发者ID:CharlieBashford,项目名称:P33,代码行数:29,代码来源:my_icmp.c


示例3: calc_checksum

void
UBX::send_message(const uint16_t msg, const uint8_t *payload, const uint16_t length)
{
	ubx_header_t   header = {UBX_SYNC1, UBX_SYNC2};
	ubx_checksum_t checksum = {0, 0};

	// Populate header
	header.msg	= msg;
	header.length	= length;

	// Calculate checksum
	calc_checksum(((uint8_t *)&header) + 2, sizeof(header) - 2, &checksum); // skip 2 sync bytes

	if (payload != nullptr) {
		calc_checksum(payload, length, &checksum);
	}

	// Send message
	write(_fd, (const void *)&header, sizeof(header));

	if (payload != nullptr) {
		write(_fd, (const void *)payload, length);
	}

	write(_fd, (const void *)&checksum, sizeof(checksum));
}
开发者ID:A11011,项目名称:PX4Firmware,代码行数:26,代码来源:ubx.cpp


示例4: ant_write_message

BOOL
ant_write_message(UCHAR type, UCHAR *data, UCHAR len)
{
   int r;
   int actual;
   BOOL res = FALSE;
   UCHAR buff[ 256 ];
   buff[ 0 ] = MESG_TX_SYNC;
   buff[ 1 ] = len;
   buff[ 2 ] = type;
   memcpy(buff + 3, data, len);
   buff[ 3 + len ] = calc_checksum(buff, (3 + len));

   if (ih_cfg != NULL)
   {
      r = libusb_bulk_transfer(ih_cfg->dev_handle, 
                               (1 | LIBUSB_ENDPOINT_OUT), 
                               buff, 
                               3 + len + 1, 
                               &actual, 
                               0);
      if ((r == 0) && (actual == (3 + len + 1)))
      {
         res = TRUE;
      }
      else
      {
         printf("Writing FAILED! r = %d actual=%d\n", r, actual);
      }
   }
   return res;
}
开发者ID:eddieparker27,项目名称:Concept2_920XT,代码行数:32,代码来源:ant_libusb.c


示例5: headphone_gain_store

static ssize_t headphone_gain_store(struct kobject *kobj,
		struct kobj_attribute *attr, const char *buf, size_t count)
{
	unsigned int lval, rval, chksum;

	sscanf(buf, "%u %u %u", &lval, &rval, &chksum);

#ifdef CONFIG_MACH_LGE
	if (lge_stweaks_control)
		return count;
#endif

	if (calc_checksum(lval, rval, chksum)) {
#ifdef CONFIG_MACH_LGE
		lge_snd_ctrl_locked = 0;
#endif
		taiko_write(fauxsound_codec_ptr,
			TAIKO_A_CDC_RX1_VOL_CTL_B2_CTL, lval);
		taiko_write(fauxsound_codec_ptr,
			TAIKO_A_CDC_RX2_VOL_CTL_B2_CTL, rval);
#ifdef CONFIG_MACH_LGE
		lge_snd_ctrl_locked = 1;
#endif
	}
	return count;
}
开发者ID:adyjl,项目名称:DORIMANX_LG_STOCK_LP_KERNEL,代码行数:26,代码来源:sound_control_3_gpl.c


示例6: c2pm3_send_command

BOOL
c2pm3_send_command(UCHAR cmd, UCHAR *data, UCHAR len)
{
   int r;
   int actual;
   BOOL res = FALSE;
   UCHAR buff[ 21 ];
   memset(buff, 0, 21);
   buff[ 0 ] = 0x01;
   buff[ 1 ] = START_FLAG;
   buff[ 2 ] = cmd;
   memcpy(buff + 3, data, len);
   buff[ 3 + len ] = calc_checksum(buff + 2, (1 + len));
   buff[ 4 + len ] = STOP_FLAG;

   if (ih_cfg != NULL)
   {
      r = libusb_bulk_transfer(ih_cfg->dev_handle, 
                               (4 | LIBUSB_ENDPOINT_OUT), 
                               buff, 
                               21, 
                               &actual, 
                               0);
      if ((r == 0) && (actual == 21))
      {
         res = TRUE;
      }
      else
      {
         printf("Writing FAILED! r = %d actual=%d\n", r, actual);
      }
   }
   return res;
}
开发者ID:eddieparker27,项目名称:Concept2_920XT,代码行数:34,代码来源:c2pm3_libusb.c


示例7: wac_generate_random_pin

unsigned int wac_generate_random_pin(char *my_pin)
{
	FILE *fHandle;
	unsigned int buf;
	char pin[9];

	fHandle = fopen("/dev/urandom", "rb");
	if (NULL == fHandle) {
		printf("Could not open /dev/urandom.\n");
		return -1;
	}

	fread(&buf, 1, sizeof(unsigned int), fHandle);
	fclose(fHandle);
	
	buf %= 10000000;
    
    buf = buf * 10 + calc_checksum(buf);

	printf("Random PIN = %d\n", buf);

	snprintf(pin, 9, "%08d", buf);
    memcpy(my_pin, pin, 8);

	return buf;
}
开发者ID:dalingrin,项目名称:android_system_wlan_atheros,代码行数:26,代码来源:wac_utils.c


示例8: OFB_push

int OFB_push(unsigned char inbuffer[])
{
	static int overflowed=0;
	if(ofb_size!=OVERFLOWBUFFERDEPTH)
	{
		unsigned char checksum;
		checksum=calc_checksum(inbuffer);
		//ofb_buffer[ofb_head][0]='1';
		ofb_buffer[ofb_head][DMABUFFERSIZE+4]=checksum;
		ofb_head++;
		if(ofb_head>=OVERFLOWBUFFERDEPTH)
		{
			ofb_head=0;
		}
		ofb_size++;
		return 1;

	}	
	else
	{
		printf("OverFlow Buffer was overflowed\r\n");
		overflowed++;
		return 0;
	}	
}	
开发者ID:JEB12345,项目名称:DataLogger,代码行数:25,代码来源:overflowBuffer.c


示例9: headphone_pa_gain_store

static ssize_t headphone_pa_gain_store(struct kobject *kobj,
		struct kobj_attribute *attr, const char *buf, size_t count)
{
	unsigned int lval, rval, chksum;
	unsigned int gain, status;
	unsigned int out;

	sscanf(buf, "%u %u %u", &lval, &rval, &chksum);

	if (calc_checksum(lval, rval, chksum)) {
	gain = taiko_read(fauxsound_codec_ptr, TAIKO_A_RX_HPH_L_GAIN);
	out = (gain & 0xf0) | lval;
	taiko_write(fauxsound_codec_ptr, TAIKO_A_RX_HPH_L_GAIN, out);

	status = taiko_read(fauxsound_codec_ptr, TAIKO_A_RX_HPH_L_STATUS);
	out = (status & 0x0f) | (lval << 4);
	taiko_write(fauxsound_codec_ptr, TAIKO_A_RX_HPH_L_STATUS, out);

	gain = taiko_read(fauxsound_codec_ptr, TAIKO_A_RX_HPH_R_GAIN);
	out = (gain & 0xf0) | rval;
	taiko_write(fauxsound_codec_ptr, TAIKO_A_RX_HPH_R_GAIN, out);

	status = taiko_read(fauxsound_codec_ptr, TAIKO_A_RX_HPH_R_STATUS);
	out = (status & 0x0f) | (rval << 4);
	taiko_write(fauxsound_codec_ptr, TAIKO_A_RX_HPH_R_STATUS, out);
	}
	return count;
}
开发者ID:abazad,项目名称:SizotrixKernel,代码行数:28,代码来源:sound_control_3_gpl.c


示例10: if

void _GPS::request(NMEA_types type, byte mode, byte rate, boolean chksum)
{
//  update template with user-defined NMEA type
	if     (GGA == type)	buffer_out[10] = '0';
	else if(GLL == type)	buffer_out[10] = '1';
	else if(GSA == type)	buffer_out[10] = '2';
	else if(GSV == type)	buffer_out[10] = '3';
	else if(RMC == type)	buffer_out[10] = '4';
	else if(VTG == type)	buffer_out[10] = '5';

//  update for user-defined mode
	buffer_out[13] = mode + 48;

//  update for user-defined update rate (TODO: modify to allow rates > 10)
	buffer_out[16] = rate + 48;

//	update user-defined checksum status
	if(chksum)
		buffer_out[19] = '1';
	else
		buffer_out[19] = '0';

	calc_checksum();

	send(buffer_out, 25);
}
开发者ID:mechatrocity,项目名称:exploromatic,代码行数:26,代码来源:uart_gps.cpp


示例11: NNTI_alloc

static void *do_request_wait(void *args)
{
    NNTI_result_t rc;
    selfsend_args *ssa;

    double wait_time=0.0;

    NNTI_alloc(&trans_hdl, NNTI_REQUEST_BUFFER_SIZE, 10, NNTI_RECV_QUEUE, &queue_mr);

    NNTI_create_work_request(&queue_mr, &queue_wr);

    /* client is waiting for us to initialize */
    pthread_barrier_wait(&barrier3);

    /* the client sends a message here */
    NNTI_wait(&queue_wr, -1, &queue_status);

    ssa=(selfsend_args *)queue_status.start;
    if (ssa->chksum != calc_checksum((const char *)&ssa->data, sizeof(data_t))) {
        fprintf(stdout, "checksum failure in the request thread");
        success=false;
    }

    pthread_barrier_wait(&barrier3);

    NNTI_destroy_work_request(&queue_wr);

    NNTI_free(&queue_mr);

    return(NULL);
}
开发者ID:agrippa,项目名称:Trilinos,代码行数:31,代码来源:ProgressTimeoutTest.cpp


示例12: send_command

static void send_command(unsigned char *command, int command_length)
{
	int		retry = 0, sent;
	unsigned char	sbuf[128];

	/* Prepare the send buffer */
	sbuf[0] = PW_COMMAND_START_BYTE;
	sbuf[1] = (unsigned char)(command_length);
	memcpy(sbuf+2, command, command_length);
	command_length += 2;

	/* Add checksum */
	sbuf[command_length] = calc_checksum(sbuf);
	command_length += 1;

	upsdebug_hex (3, "send_command", sbuf, command_length);

	while (retry++ < PW_MAX_TRY) {

		if (retry == PW_MAX_TRY) {
			ser_send_char(upsfd, 0x1d);	/* last retry is preceded by a ESC.*/
			usleep(250000);
		}

		sent = ser_send_buf(upsfd, sbuf, command_length);

		if (sent == command_length) {
			return;
		}
	}
}
开发者ID:ThomasKurz,项目名称:nut,代码行数:31,代码来源:bcmxcp_ser.c


示例13: nbs_pack_envelope

int nbs_pack_envelope(void *packet, unsigned int dataid, size_t data_size){
  /*
   * The envelope of the data packet contains:
   *
   * 4 bytes for the data id
   * 4 bytes for the size
   * 4 bytes for the checksum of the data[]
   * the data[] (see the function above for the case of fpath or nbs.c for
   * the case of the file content.)
   *
   * This function assumes that all the packet data is already
   * stored in &packet[NBS_ENVELOPE_SIZE] and then it fills the envelope.
   */
  unsigned char *p;
  unsigned char *data;
  uint32_t checksum = 0;

  p = (unsigned char*)packet;
  data = &p[NBS_ENVELOPE_SIZE];

  pack_uint32(p, dataid, 0);
  pack_uint32(p, data_size, 4);
  checksum = calc_checksum(data, data_size);
  pack_uint32(p, checksum, 8);

  return(0);
}
开发者ID:Adnan-Polewall,项目名称:nbsp,代码行数:27,代码来源:pack.c


示例14: apply_eip_snat

/*
 * Packets headed towards the Internet, outside interface address placed
 * as source of packet.
 */
unsigned int apply_eip_snat(const struct net_device *out, struct sk_buff *skb)
{
	struct iphdr *iph = NULL;
	struct extended_ip *ipopt = NULL;

	//if(!out || strcmp(out->name, "eth0") != 0){

	if(!out || strcmp(out->name, nic_name) != 0){
		return NF_ACCEPT;
	}


	iph = ip_hdr(skb);
	if(!iph)
		return NF_ACCEPT;

	if(iph->ihl == 8){
	   //ipopt = (void *)skb->data + sizeof(struct iphdr);
	   ipopt = (char *)(skb->data + sizeof(struct iphdr));
	   if(ipopt->optionid == ENIP_MAGIC){
		ipopt->esp = 1;
		ipopt->extended_saddr = iph->saddr;
		iph->saddr = outside_ip;
		ipopt->esp = 1;
		iph->check = 0;
		calc_checksum(skb);
	   }
	}

	return NF_ACCEPT;
}
开发者ID:EnIP,项目名称:enhancedip,代码行数:35,代码来源:eipnat_mod.c


示例15: ist_default

void ist_default(INDEX_SECTOR_T *IndexSector)
{
	memset(IndexSector, 0, INDEX_SECTOR_SIZE);
	IndexSector->Tag = ENDIAN_INT(TAG_SECTOR_TABLE);
	//IndexSector->GSensorSensitivityVer = ENDIAN_SHORT(1);
	//IndexSector->GSensorSensitivityAlgorithm = ENDIAN_SHORT(1);
	IndexSector->Checksum = calc_checksum( (unsigned long *)IndexSector, (INDEX_SECTOR_SIZE-4)/4);
}
开发者ID:jiangxilong,项目名称:testgdr,代码行数:8,代码来源:fmt.c


示例16: iphdr_check

int iphdr_check(const void *data)
{
	ip_fragment_t *frag = (ip_fragment_t *)data;
	__u8 head_length;

	if ((head_length = frag->head->ihl) < 5)
		return -1;

	return calc_checksum(frag) ? 0 : -1;
}
开发者ID:tongsucn,项目名称:ip_stack,代码行数:10,代码来源:ip_input.c


示例17: verify_checksum

/*	Verify a datastream with trailing 6-bit CRC checksum
 *	Returns 1 if checksum is valid, 0 otherwise
 *	Author: Maurijn Neumann
 */
int verify_checksum(unsigned char* data, int len) {
	//Declare variables
	unsigned char checksum;

	//Assume checksum is appended at end, calculate
	checksum = calc_checksum(data, len);

	//Verify
	return (checksum == 0x00);
}
开发者ID:hdantas,项目名称:quadcopter-control,代码行数:14,代码来源:checksum.c


示例18: write_checksum

void write_checksum (char* tarname, int etype) {
  char checksum[7];
  char header[265];
  FILE* tar;
  tar = fopen(tarname, "rb+");
  fread(header, 265, 1, tar);
  calc_checksum(header, checksum);
  fseek(tar, 148, SEEK_SET);
  fputs(checksum, tar);
  fclose(tar);
}
开发者ID:stpettersens,项目名称:tarino-c,代码行数:11,代码来源:tarino.c


示例19: validate_sysparam

void validate_sysparam()
{
	uint8_t checksum = calc_checksum(&sysparam, sizeof(sysparam));
	if ((sysparam.header.magic != SYSPARAM_MAGIC) ||
	    (sysparam.header.checksum != checksum) ||
		(sysparam.header.version != SYSPARAM_VERSION)) {
			printf("------------init- \n");
			memcpy((void*)&sysparam, (const void*)&initial, sizeof(sysparam));
			save_sysparam();
		}
}
开发者ID:A-khodary,项目名称:Navigation-1,代码行数:11,代码来源:sysparam.c


示例20: readonly_check_dtor

static void readonly_check_dtor(struct enif_tmp_obj_t* o)
{
    struct readonly_check_t* obj = (struct readonly_check_t*) o;
    unsigned chksum = calc_checksum(obj->ptr, obj->size);
    if (chksum != obj->checksum) { 
	fprintf(stderr, "\r\nReadonly data written by NIF, checksums differ"
		" %x != %x\r\nABORTING\r\n", chksum, obj->checksum);
	abort();
    }
    erts_free(obj->hdr.allocator,  obj);
}
开发者ID:a5an0,项目名称:otp,代码行数:11,代码来源:erl_nif.c



注:本文中的calc_checksum函数示例由纯净天空整理自Github/MSDocs等源码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。


鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
上一篇:
C++ calc_ea_dst函数代码示例发布时间:2022-05-30
下一篇:
C++ calcSize函数代码示例发布时间:2022-05-30
热门推荐
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap