bool MsgDataMrg::check_pkg_len(unsigned int pkg_len) { if (pkg_len < get_header_len() || pkg_len > (XY_MAXBUFF_LEN - get_header_len())) { return false; } return true; }
static int read_tap() { unsigned char buf[MAX_PACKET_LEN]; int hlen = get_header_len(); int r; int len; r = tap_read(tap_fd, buf + hlen, MAX_PACKET_LEN - hlen); if (r < 0) { wmlog_msg(1, "Error while reading from TAP interface"); return r; } if (r == 0) { return 0; } stat_speed_out_mbit += r; len = fill_data_packet_header(buf, r); wmlog_dumphexasc(4, buf, len, "Outgoing packet:"); r = set_data(buf, len); return r; }
/* * 读出协议头 */ int MsgDataMrg::read_head(char * buff) { int offset = 0; //unsigned int pkg_len = 0; offset += ReadInt(buff + offset, head.len, 1); offset += ReadInt(buff + offset, head.cmd, 1); offset += ReadInt(buff + offset, head.sn, 1); //offset += ReadBuf(buff + offset, head.uid, UID_SIZE); offset += ReadInt(buff + offset, head.uid, 1); offset += ReadInt(buff + offset, head.opt, 1); offset += ReadInt(buff + offset, head.crc, 1); offset += ReadInt(buff + offset, head.ver_no,1); //offset += ReadBuf(buff + offset, head.ext, 24); //PkgLen = LenCombo >> 8; //HeadLen = LenCombo << 24 >> 24; return get_header_len(); }
bool MsgDataMrg::check_head_len(unsigned int len) { return get_header_len() > len ? false : true; }